5 类的自动加载
作者:互联网
在某个类中想要调用其它的类,一般情况下是require或者include某个文件。但是这样的情况会出现就是不便于管理,类太多那不是就有很多的require吗,而且每次执行都要加载这些文件,会白白占用内存,其次当删除了某个类文件时,也要对应的修改include或者require语句。
//一般情况
require("Cat.class.php");
require("Dog.class.php");
$cat = new Cat;
$dog = new Dog;
$cat->scream();
$dog->scream();
使用__autoload()魔术方法来代替include或者require语句,则可以避免大量的代码冗余,也可以提高执行效率。
//使用__autoload()魔术方法
function __autoload($class_name){
require($class_name.'.class.php');
}//其实这样也不好,以为require被写死了
$cat = new Cat;
$dog = new Dog;
$cat->scream();
$dog->scream();
__autoload()的缺点:
1.一个文件中只允许有一个__autoload(),当引入的项目中有其他__autoload()时,则会发生冲突。
2. 当项目中的类根据不同的用处放在不同的文件夹中,此时要分别调用对应的类,会十分困难。
此方法还有一个改进版本就是将所有需要用到的类和路径存入另一个文件中,如下:
!!!暂时搞不来
spl_autoload_register()
该函数可以注册任意数量的自动加载器,当使用未被定义的类和接口时自动去加载。
标签:__,require,autoload,cat,自动,new,class,加载 来源: https://www.cnblogs.com/stonffeliu/p/15968132.html