根据http://php.net/manual/en/language.oop5.autoload.php,魔术函数__autoload()将在即将发布的PHP版本中变为DEPRECATED和DELETED(!)。官方替代方案是spl_autoload()。见http://www.php.net/manual/en/function.spl-autoload.php。但是php手册没有解释这个宝宝的正确使用方法。
我的问题:如何替换它(我的自动类自动加载器)
function __autoload($class) {
include 'classes/' . $class . '.class.php';
}
带有spl_autoload()的版本?问题是:我无法弄清楚如何给该函数一个路径(它只接受命名空间)。
顺便说一下:在SO.com上有很多关于这个话题的主题,但没有一个提供干净的&简单的解决方案取代了我的性感单线。
答案 0 :(得分:30)
您需要使用spl_autoload_register
注册自动加载功能。您需要提供"callable"。从5.3开始,最好的方法是使用匿名函数:
spl_autoload_register(function($class) {
include 'classes/' . $class . '.class.php';
});
这对__autoload
的主要优势当然是你可以多次调用spl_autoload_register
,而__autoload
(就像任何函数一样)只能定义一次。如果您有模块化代码,这将是一个重大缺陷。
2018年更新:当你需要推出自己的自动加载器时,应该没有多少次。有一个被广泛接受的标准(称为PSR-4)和几个符合要求的实现。显而易见的方法是使用Composer。