__autoload()函数(PHP)是必须是独立函数还是可以在类中用作公共/受保护/私有函数?
我听说它必须是一个独立的功能,不应该在课堂上使用。这是真的还是可以在课堂上使用?
提前致谢!
答案 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()
函数让你的类调用自动加载。