php中的__autoload
php中的__autoload
php中,在__autoload魔术方法出现以前,我们实例化对象时,必须要引入其对应的类文件,当有多个实例化时,引入的文件就相当多了。如果使用__autoload方法,则不需要再引入多个类文件。
NO1:之前示例
require_once('project/class/A.php');
require_once('project/class/B.php');
require_once('project/class/C.php');
if(条件A){
$a = new A();
$b = new B();
$c = new C();
}else if(条件B){
$a = new A();
$b = new B();
}
可以看到当运行条件B时,还需要多编译下C.php,增加了开销
NO2:使用__autoload()
function __autoload($classname){
$filepath = "project/class/{$classname}.php";
if(isreadable($filepath)){
require($filepath); //这里可以只用require,因为一旦引用某个类后,将不会调用__autoload(),直接使用内存中的该类
}
}
if(条件A){
$a = new A();
$b = new B();
$c = new C();
}else if(条件B){
$a = new A();
$b = new B();
}
优势
1:代码整洁,没有冗余代码
2:效率较之前高,见NO2注释