通常我会看到复杂的自动加载解决方案,需要用户使用预定义的一组路径/目录来对它们进行水合处理,以便在自动加载类时进行查看。或者他们有一个复杂的类似于glob的搜索,然后构建一个缓存文件以减少查找时间等。
但是,我注意到只要你命名每个类,并且这些命名空间与包含它们的目录结构相匹配,那么你的自动加载器不需要比这更复杂:
spl_autoload_register(function ($class) {
include $class . '.php';
});
假设您不必使用非命名空间的第三方类,是否有理由不根据您的文件夹结构命名您的类,然后让spl_autoload_register为您处理所有事情?
我忽略了这个陷阱吗?
答案 0 :(得分:0)
<?php
/**
* Ultra fast class autoloader.
*
* @param string $class
* Fully qualified class name (automatically passed to this magic function by PHP).
*/
function __autoload($class) {
static $ds = DIRECTORY_SEPARATOR;
$class = strtr($class, "\\", DIRECTORY_SEPARATOR);
require "{$_SERVER["DOCUMENT_ROOT"]}{$ds}src{$ds}{$class}.php";
}
?>
DIRECTORY_SEPARATOR
)strtr()
是最快的字符串替换功能