Ste*_*eve 19 php spl-autoload-register
class Manage
{
spl_autoload_register(function($class) {
include $class . '.class.php';
});
}
Run Code Online (Sandbox Code Playgroud)
说我有一些像上面这样的代码.我选择使用加载类的匿名函数方法,但这是如何使用的?它究竟是如何确定'$class'要加载的?
Bai*_*ker 24
你不能把代码放在那里.你应该在课后添加SPL寄存器.如果你想在Manage类中注册一个函数,你可以这样做:
class Manage {
public static function autoload($class) {
include $class . '.class.php';
}
}
spl_autoload_register(array('Manage', 'autoload'));
Run Code Online (Sandbox Code Playgroud)
但是,正如您所演示的那样,您可以使用匿名函数.你甚至不需要课程,所以你可以这样做:
spl_autoload_register(function($class) {
include $class . '.class.php';
});
Run Code Online (Sandbox Code Playgroud)
无论哪种方式,您指定的函数都会添加到负责自动加载的函数池中.您的功能将附加到此列表中(因此,如果列表中已有任何功能,则您的功能将是最后一个).有了这个,当你做这样的事情时:
UnloadedClass::someFunc('stuff');
Run Code Online (Sandbox Code Playgroud)
PHP将意识到尚未声明UnloadedClass.然后它将遍历SPL自动加载功能列表.它将使用一个参数调用每个函数:'UnloadedClass'.然后在调用每个函数之后,它会检查该类是否存在.如果没有,它会继续,直到它到达列表的末尾.如果从未加载类,您将收到一个致命错误,告诉您该类不存在.
| 归档时间: |
|
| 查看次数: |
27285 次 |
| 最近记录: |