(PHP 5, PHP 7)
__autoload — 尝试加载未定义的类
这是php手册中的解释
第一次看到__autoload的时间还是在公司发的php水平测试中发现的,当时简单搜了一下,也没有太过在意,今天突然就想起来这个方法,并百度了一下11个魔术方法
__autoload
__autoload 函数,使用尚未被定义的类时自动调用。通过此函数,脚本引擎在 PHP 出错失败前有了最后一个机会加载所需的类。
注意: 在 __autoload 函数中抛出的异常不能被 catch 语句块捕获并导致致命错误。
在百度里面对__autoload的解释也看得我有点晕,最后单独搜了一下这个方法才搞明白。
/**
* 文件non_autoload.php
*/
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 = newA();
$b = new B();
// … 业务逻辑
}
上面这个是没有用__autoload的写法
/**
* 文件autoload_demo.php
*/
function __autoload($className) {
$filePath = “project/class/{$className}.php”;
if (is_readable($filePath)) {
require($filePath);
}
}
if (条件A) {
$a = new A();
$b = new B();
$c = new C();
// … 业务逻辑
} else if (条件B) {
$a = newA();
$b = new B();
// … 业务逻辑
}
然而在使用了__autoload之后,烦人的引入被集成到了__autoload里,而这时时候,我也终于明白了__autoload的用法————没有找到类时,__autoload就会被调用。
不仅可以在__autoload里引入类,也可以在__autoload里加异常处理,非常完美,哈哈哈‧★,:*:‧\( ̄▽ ̄)/‧:*‧°★*