OOP中的PHP __autoload函数

时间:2011-11-23 14:43:34

标签: php oop autoload

__autoload()函数(PHP)是必须是独立函数还是可以在类中用作公共/受保护/私有函数?

我听说它必须是一个独立的功能,不应该在课堂上使用。这是真的还是可以在课堂上使用?

提前致谢!

3 个答案:

答案 0 :(得分:5)

您可以使用SPL:

class MyAutoloader
{
    public static function register()
    {
        spl_autoload_register(array(new self, 'autoload'));
    }

    public static function autoload($classname)
    {
        // auto load code
    }
}

答案 1 :(得分:4)

请参阅__autoload() documentation,其中包含:

  

spl_autoload_register()为自动加载类提供了更灵活的替代方法。因此,不鼓励使用__autoload(),将来可能会弃用或删除。

如果您需要一些如何使用某个类的方法作为自动加载器机制的示例,请参阅this example

答案 2 :(得分:3)

在你做的一些随机课中有__autoload()会有什么意义?

当您尝试从尚未定义的类中实例化对象时,将调用

__ autoload()(spl_register_autoload()优先于__autoload())。

因此,它必须是全球可用的。 PHP不知道类XYZ包含您要调用的名为__autoload()的函数。

你可以做的是创建一个处理自动加载的类,然后使用spl_autoload_register()函数让你的类调用自动加载。