php的spl_autoload标准库方法,phpspl_autoload
程序员文章站
2022-05-12 09:53:09
...
php的spl_autoload标准库方法,phpspl_autoload
在php5中的spl_autoload方法相当于实现自己的__autoload
php function __autoload($classname){ if(is_file($classname.'.php'){ include $classname.'.php'; } elseif(is_file($classname.'.inc'){ include $classname.'.inc'; } }
它会在注册目录下自动寻找与$classname同名的.php/.inc文件。当然,你也可以指定特定的文件,方法是注册扩展名
php
spl_autoload_extensions('.php,.inc,.some');
那么怎样自动加载spl_autoload呢,方法是
php
spl_autoload_register();
spl_autoload_register有一个$callback参数,如果不指定,它就会自动注册spl_autoload,为了能搜寻更多的自动加载目录,可以在这些代码前面设置自动加载目录
php set_include_path(get_include_path() . PATH_SEPARATOR . 'some/path' . DIRECTORY_SEPARATOR);
这些方法常用在php框架中。
__autoload 常用在自动加载类库处理
也就是网上说的 这种方法,根据类名,找出类文件,然后require_one
spl_autoload_register()
__autoload的最大缺陷是无法有多个autoload方法
好了, 想下下面的这个情景,你的项目引用了别人的一个项目,你的项目中有一个__autoload,别人的项目也有一个__autoload,这样两个__autoload就冲突了。解决的办法就是修改__autoload成为一个,这无疑是非常繁琐的。
因此我们急需使用一个autoload调用堆栈,这样spl的autoload系列函数就出现了。你可以使用spl_autoload_register注册多个自定义的autoload函数
如果你的PHP版本大于5.1的话,你就可以使用spl_autoload
这是一个PHP 类似自动加载的函数 比如 __autoload 但这个只能传入我们NEW的类名 如果想在NEW的时候调用自己定义的函数就可以用
spl_autoload_register