【发布时间】:2019-01-27 23:01:49
【问题描述】:
使用 spl_autoload_register 在我的代码上自动加载类。示例:
<?php
spl_autoload_register(function ($class_name) {
include 'my_class1.php';
include 'my_class2.php';
//...
include 'my_classN.php';
});
$obj = new MyClass1();
?>
如果我在代码中只使用了MyClass1 类,自动加载会加载所有文件还是只加载my_class1.php?
提前致谢。
编辑:不要使用上面的代码。现在我使用 @Alex Howansky's 代码和 PSR-4 自动加载 specifications。
注意:如果类位于相对于 basedir (see examples) 的子目录中,则自动加载需要使用命名空间。
【问题讨论】:
-
有了这段代码,当你第一次引用任何类时,它会加载每个类。在自动加载器中,您通常只想加载
$class_name引用的类。 -
语法正确,可以使用。但是,它效率低下,并且错过了使用自动加载器的意义。
-
感谢回复,这种情况下应该如何只为使用过的类加载文件?
标签: php class namespaces autoload spl-autoload-register