拥有多个spl_autoload_register的好处是什么
示例:
spl_autoload_register('autoload_systems');
spl_autoload_register('autoload_thirdparties');
spl_autoload_register('autoload_services');vs:
使用一个
spl_autoload_register('autoload');或__autoload();
然后在函数内部执行逻辑。
eg:
$ftp = new systems_ftp();
$services = new services_cron_email();发布于 2011-11-20 10:17:02
如果你有一个__autoload(),并且你包含了一个第三方库,这个库也有一个,那么它将会被重创。
在spl_autoload_register()中注册多个自动加载可以确保您的代码可以与现有代码(想想库等)放在一起,而不会破坏或隐藏现有/未来的自动加载。
另外,PHP manual states...
spl_autoload_register()为自动加载类提供了更灵活的替代方案。因此,不鼓励使用__autoload(),将来可能会弃用或删除。
发布于 2016-05-25 15:00:05
我想不需要添加多个,但这是在你的逻辑上。spl_autoload_register的工作方式非常棒。假设有第三方目录,通常是通过命名空间来管理的,命名空间也代表了它们的路径。将这个简单的类看作autoloader类
class MyAutoLoader {
public function __construct()
{
spl_autoload_register( array($this, 'load') );
}
function load( $class )
{
$filepath = 'classes/'.$class.'.php';
require_once( $filepath);
}
}然后在索引文件中包含这个加载器文件,并创建这个类的实例:
$autoload = new MyAutoLoader();现在您可以直接创建类的实例。假设我们在目录classes\QMS\SERVICES\Person.php中有'Person‘类,相同的路径是该类的命名空间
$person = new QMS\SERVICES\Person();现在,当你使用new时,它会检查这个类是否存在,并将字符串形式的值传递给'MyAutoLoader‘类的'load’函数。在那里,它将被包括在内。或者你可以改变'load‘函数来修复你的类文件的路径,放入你的if条件或者任何需要修复路径的东西。
https://stackoverflow.com/questions/8198922
复制相似问题