PHP有一个内置的自动加载器寄存器,spl_autoloader_register(),您可以在其中编写自己的自动加载器功能,就像我在下面所做的那样(您可以想到的任何即兴创作都会有所帮助):
<?php
require_once(__DIR__ . '/../libraries/global.lib.php');
function load_classes($class) { // appears to get all the names of the classes that are needed in this script...
$file_name = __DIR__ . '/classes/' . $class . '.class.php';
if (file_exists($file_name)) {
require_once($file_name);
}
}
function load_interfaces($interface) {
$file_name = __DIR__ . '/classes/' . $interface . '.interface.php';
if (file_exists($file_name)) {
require_once($file_name);
}
}
spl_autoload_register('load_interfaces');
spl_autoload_register('load_classes');
?>
但我开始查看其他代码并发现人们使用自动加载器类而不是内置的PHP自动加载器功能:为什么会这样?
答案 0 :(得分:3)
来自PHP documentation on autoloading:
提示 spl_autoload_register()为自动加载类提供了更灵活的替代方法。因此,不鼓励使用__autoload(),将来可能会弃用或删除。
所以答案实际上是你按照推荐的方式做的。您正在查看的代码可能是遗留代码,因为在__autoload()
之前spl_autoload_register()
可用。
请注意,如果您想尽可能多地使用OO,也可以使用静态类函数进行自动加载:
class MyClass {
static function myloader($name) {
require_once($name.'.php');
}
}
spl_autoload_register('MyClass::myloader');