__autoload()方法可以尝试加载未定义的类。
以前,如果在整个程序的生命周期内创建100个对象,就要用include()或require()包含100个类文件,或者在同一个类文件内定义100个类。
示例代码如下:
/** * file non_autoload.php */ require_once('project/class/A.php'); require_once('project/class/B.php'); require_once('project/class/C.php'); . . . if (ConditionA) { $a = new A(); $b = new B(); $c = new C(); // … } else if (ConditionB) { $a = newA(); $b = new B(); // … }
那么使用__autoload()方法呢?
示例代码如下:
/** * 文件 autoload_demo.php */ function __autoload($className) { $filePath = “project/class/{$className}.php”; if (is_readable($filePath)) { require($filePath); } } if (ConditionA) { $a = new A(); $b = new B(); $c = new C(); // … } else if (ConditionB) { $a = newA(); $b = new B(); // … }
当PHP引擎第一次使用类A时,如果A没有找到,就会调用__autoload方法,参数为类名"A"。然后我们需要在__autoload()方法中根据类名找到相应的类文件并包含该文件。如果文件没有找到,PHP引擎就会抛出异常。
登录后可发表评论