源码阅读-ThinkPHP-附录A-自动加载函数解析
2017-06-06 本文已影响0人
苏近之2017
__autoload 函数
这是 PHP 的魔法函数,会在实例化的类不存在的时候,自动调用。
function __autoload($clazz){
echo '您调用的类' . $clazz . '不存在!'
// TODO 引入不存在的类
}
$userModel = new User();
这段代码将会输出:
您调用的类User不存在!
这么做的好处是什么呢?
如果不这么做会怎么样呢?
不怎么做的话,我们代码可能会像下面这样子:
include 'xxx1.php';
include 'xxx2.php';
include 'xxx3.php';
include ...
这样的代码不方便维护,不灵活。如果使用自动加载,那么将省去很多麻烦,遇到不存在的类自动加载就好了。
升级版 __autoload 函数
这个升级版的名字叫做spl_autoload_register
。下面是示例。
function autoload_func($clazz){
echo '您实例化的类' . $clazz . '不存在';
// TODO 引入不存的类
}
spl_autoload_register('autoload_func');
$userModel = new User();
输出的结果和上面是一样的,好处在于可以自己定义这个函数,但是不会自动触发。
也可以使用类的静态方法。
class Load{
static function autoload_func(){
echo '执行';
// 做你应该做的事情
}
}
spl_autoload_register('Load::autoload_func');
// 等同于上面的写法
//spl_autoload_register(array('Load','autoload_func'));
$userModel = new User();