php最早是没有class的概念的,文件依赖也是靠程序员自己写require 等来加载依赖的文件,这样有个很大的缺点,就是要程序员自己写冗余的加载文件的代码,而且不太好实现按需加载
后来php有了class概念之后便有了自动加载,其原理就是写一个__autoload 的魔术方法当php找不到类的时候就会触发这个方法,然后在这个魔术方法里面再根据一定的规则去require对应的php文件
不过这个也有很大的问题,就是整个项目中只能写一个__autoload 方法了,如果是不同的类库带的__autoload 方法放一起会冲突,
后来php提供了spl_autoload_register 方法可以注册多个__autoload方法到同一个上下文中了,我根据这个实现了一个简单的自动加载器
<?php
function mmxf_03311_autoload($class){
$class_file_name = dirname(__FILE__).
"/lib/".str_replace("_","/",$class).
".php";
if(file_exists($class_file_name)){
require_once ($class_file_name);
}else{
die("$class 对应的类文件不存在");
}
}
spl_autoload_register("mmxf_03311_autoload");