自动加载
在PHP代码中,不需要显式地使用文件路径将类库文件包含进来,便可使用该文件中定义的类库,这种技术称作自动加载。
使用spl_autoload_register()方法可以注册多个autoload()函数,这在主流PHP框架中很常见,原因是:
- __autoload()函数是全局唯一的,如果框架占了这个名字,便会导致框架的用户用不了其它的__autoload()方法了,包括用户自定义的和其它类库带的。spl_autoload_register()可以注册多个autoload方法,不存在这个问题。
- __autoload()是一个函数,在实际使用中,开发者势必要赋予它一些变量(例如class path和下文要讲到的class_name => file_path mapping数组)。这就只能靠全局变量(global variable)了,使用全局变量可不是好的编码习惯。spl_autoload_register()可以将一个Class的某个方法注册为autoload函数,如Symfony的spl_autoload_register(array(self::getInstance(), 'autoload')),和Lotusphp的spl_autoload_register(array($this, "loadClass"));