PHP的类自动加载机制
假设我们有一个php文件需要引用5个不同的类文件,可能会写出下面这样的代码:
require_once ("A.php");
require_once ("B.php");
require_once ("C.php");
require_once ("D.php");
require_once ("E.php");
$a = new A();
$b = new B();
$c = new C();
$d = new D();
$e = new E();
随着类的增多,文件之间依赖关系的复杂化,这里的require
也会越来越多,程序员在编写代码的时候很容易忘记或者漏掉某个require
,而且在每个php文件中都大量充斥着这种代码,看着真心累。 在PHP5中为这个问题提供了一个解决方案,这就是类的自动加载机制(autoload
),这个机制可以使得程序在真正使用某个类时才开始加载这个类,所以也可以叫做类的延迟加载(lazy loading
)。PHP提供了两种方法来达到这个目的:
__autoload
方法SPL
的autoload机制
使用__autoload
方法,可以将类名和所需要的类文件建立一个映射关系,一般情况是让类名和文件名保持一致,让PHP自动的去加载这些类。一个典型的__autoload
方法如下:
function __autoload($classname) {
require_once ($classname . ".php");
}
$a = new A();
$b = new B();
$c = new C();
$d = new D();
$e = new E();
参考
扫描二维码,在手机上阅读!