在PHP.net上,__ autoload的描述为“尝试加载未定义的类”。但是,它声明您可以定义“启用类自动加载”功能。所以,比方说我定义了这样的函数:
function __autoload($className) {
if (file_exists(ROOTDIRECTORY . $className . '.class.php')) {
require_once(ROOTDIRECTORY . $className . '.class.php');
}
}
__autoload是否仍然只加载尚未定义的类,或者上面写的函数的内容是否会覆盖此功能?
答案 0 :(得分:3)
是的,它只会触发尚未包含的类。这意味着您可以使用更简单的require_once()
替换require()
,这样可以减少PHP在后台处理的开销。
此外,您应该在函数中添加else { return false; }
,以便PHP在无法找到类文件时触发相应的错误。
答案 1 :(得分:1)
仅当函数class_exists
返回false
时才会调用此函数。