如何使用spl_autoload()作为__autoload()变为不推荐使用(How to use

2019-07-29 11:37发布

据http://php.net/manual/en/language.oop5.autoload.php神奇功能__autoload()将在即将到来的PHP版本变得过时和已删除(!)。 官方的另一种方法是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关于该话题的线索,但没有给人一种干净和简单的解决方案,它取代我的性感的一行代码。

Answer 1:

您需要注册的自动加载功能spl_autoload_register 。 您需要提供一个“通知” 。 这样做,从5.3开始的最好方式,是一个匿名函数:

spl_autoload_register(function($class) {
    include 'classes/' . $class . '.class.php';
});

这对主要优点__autoload当然,你可以调用spl_autoload_register多次,而__autoload (像任何功能)只能被定义一次。 如果你有模块化的代码,这将是一个显著的缺点。


2018更新到这一点:不应该真的是很多时候你需要推出自己的自动加载。 有一个广泛接受的标准(称作PSR-4 )和几个贴合实现。 这样做的明显的方法是使用作曲家 。



文章来源: How to use spl_autoload() as __autoload() goes DEPRECATED