根据http://php.net/manual/en/language.oop5.autoload.php http://php.net/manual/en/language.oop5.autoload.php神奇的功能__autoload()
自 PHP 7.2.0 起已弃用,并自 PHP 8.0.0 起删除。
官方的替代方案是spl_autoload()
. See http://www.php.net/manual/en/function.spl-autoload.php http://www.php.net/manual/en/function.spl-autoload.php。但PHP手册并没有说明这个宝贝的正确使用方法。
我的问题:如何用以下版本替换它(我的自动类自动加载器)spl_autoload()
?
function __autoload($class) {
include 'classes/' . $class . '.class.php';
}
Problem:我不知道如何为该函数提供路径(它只接受名称空间)。
顺便说一句,这里有很多关于这个主题的帖子,但没有一个给出一个干净简单的解决方案来取代我性感的一句台词。
您需要注册自动加载功能spl_autoload_register http://www.php.net/manual/en/function.spl-autoload-register.php。您需要提供一个“可调用” http://www.php.net/manual/en/language.types.callable.php。从 5.3 开始,最好的方法是使用匿名函数:
spl_autoload_register(function($class) {
include 'classes/' . $class . '.class.php';
});
这样做的主要优点是__autoload
当然你可以打电话spl_autoload_register
多次,而__autoload
(像任何函数一样)只能定义一次。如果您有模块化代码,这将是一个重大缺点。
2018 年更新:不应该有那么多场合need推出您自己的自动装弹机。有一个被广泛接受的标准(称为PSR-4 https://www.php-fig.org/psr/psr-4/)和几个符合要求的实现。这样做的明显方法是使用Composer https://getcomposer.org/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)