很抱歉可能会重复询问。但是很难用这个可混淆的关键词来搜索答案。
所以这是场景:
我尝试建议制作简单的自动加载器。到目前为止我是这样做的:
private function getAutoInclude($classfile) {
$classfileLower = strtolower($classfile);
if (isset($this->configs['Paths']['base.'.$classfileLower])) { // Use path scope to locate file first
return require_once($this->configs['Paths']['base.'.$classfileLower]['Path']);
} elseif ($this->configs['LibRoot'] && strpos($classfile, '\\') !== false) { // If above not work, use namespace to locate file
return require_once($this->configs['LibRoot'] . DIRECTORY_SEPARATOR . str_replace(array('\\', '/', '_'), DIRECTORY_SEPARATOR, ltrim($classfile, '\\')) . '.php');
}
return false;
}
到目前为止它运作良好,但只有让我感到困惑的是,有些人告诉我,我必须对我包含的文件执行file_exists检查,这样我就可以将它包含得更安全,更快。
因此,考虑我想要包含的文件必须在每次包含它时,我是否真的必须在这种情况下使用file_exists?
(我知道这个问题就像新手问的那样。但是当我听到人们说file_exists可以让文件包含更快时,它会破坏我对PHP的一些了解。)
答案 0 :(得分:1)
您需要包含的文件。 (大概无论如何......你正在使用require_once()
。)如果文件不在那里,你的脚本将会失败。不需要所有这些检查和废话,只需进行require_once()
调用。
另外,将路径添加到包含路径。让PHP搞清楚。无需编写代码来搜索文件。
答案 1 :(得分:0)
只需使用__autoload()函数并节省压力,因为如果您要求的那些文件不存在,那么您就不能获得那些红表错误报告