PHP自动加载机制有两种实现方式:
一种是重写 function __autoload(){} 方法,这种方法在PHP7中已经被弃用,强制使用会提示以下错误:
PHP Deprecated: __autoload() is deprecated, use spl_autoload_register() instead in D:\WWW\study\test\autoload\demo.php on line 2
报错信息说的是 PHP 已经弃用 __autoload() 函数,并且是使用 spl_autoload_register() 函数进行替代。
另一种实现类的自动加载就是上面说的 使用 spl_autoload_register() 函数实现,通过查看官方文档查看具体定义方式:
bool spl_autoload_register ([ callable $autoload_function [, bool $throw = true [, bool $prepend = false ]]] )
参数说明:
autoload_function:
欲注册的自动装载函数。如果没有提供任何参数,则自动注册 autoload 的默认实现方式 spl_autoload().
这是一个函数【方法】名称,可以是字符串或者数组(调用类方法使用)。这个函数(方法)的功能就是,来把需要new 的类文件包含include(requeire)进来,这样new的时候就不会找不到文件了。其实就是封装整个项目的include和require功能。
throw:
此参数设置了 autoload_function 无法成功注册时,spl_autoload_register() 是否抛出异常。
prepend:
如果是true,spl_autoload_register() 会添加函数到队列之首,而不是队列尾部。
返回值:
成功是true, 失败是 false。
举个例子:
function my_autoloader($className) { include 'classes/'.$className . '.class.php'; } spl_autoload_register('my_autoloader'); spl_autoload_register(function($className){ include 'classes/'.$className . '.class.php'; });
转载请注明:微刻 blog.wecot.cn » 简述PHP类自动加载机制