Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 试图包含一个文件,文件是否存在是必需的?_Php_Include_File Exists - Fatal编程技术网

Php 试图包含一个文件,文件是否存在是必需的?

Php 试图包含一个文件,文件是否存在是必需的?,php,include,file-exists,Php,Include,File Exists,对不起,可能是重复询问。但是很难用这个容易混淆的关键词来搜索答案 下面是一个场景: 我试图得到一个建议,使我的简单自动加载器。以下是我迄今为止所做的: private function getAutoInclude($classfile) { $classfileLower = strtolower($classfile); if (isset($this->configs['Paths']['base.'.$classfileLower])) { // Use path

对不起,可能是重复询问。但是很难用这个容易混淆的关键词来搜索答案

下面是一个场景:

我试图得到一个建议,使我的简单自动加载器。以下是我迄今为止所做的:

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_存在可以使file include更快时,它打破了我对PHP的一些了解。)

你要包含的文件是必需的。(可能无论如何……您正在使用
require\u once()
)如果文件不存在,脚本将失败。不需要所有这些检查和废话,只需执行
require\u once()
调用即可


另外,将路径添加到包含路径。让PHP来解决这个问题。无需编写代码即可搜索文件。

需要包含的文件。(可能无论如何……您正在使用
require\u once()
)如果文件不存在,脚本将失败。不需要所有这些检查和废话,只需执行
require\u once()
调用即可


另外,将路径添加到包含路径。让PHP来解决这个问题。无需编写代码来搜索文件。

只需使用uu autoload()函数并减轻压力,因为如果您需要的文件不存在,那么您将很难获得这些红色表格错误报告

只需使用u autoload()即可函数并为自己节省压力,因为如果您需要的文件不存在,那么您将很难获得那些红色表格错误报告

这是否回答了您的问题?:)@本,这个问题实际上有两种情况:文件是否存在。地雷只有一个。而且我没有被抑制错误。@Ben,我在这个场景中做了另一个测试,结果是,没有文件_存在是。。。。在平均时间内更快一点。我认为我没有压抑任何东西(它只是死了),我认为没有Fiely存在是使sEnter更快。谢谢你指出这个问题的链接。这能回答你的问题吗?:)@本,这个问题实际上有两种情况:文件是否存在。地雷只有一个。而且我没有被抑制错误。@Ben,我在这个场景中做了另一个测试,结果是,没有文件_存在是。。。。在平均时间内更快一点。我认为我没有压抑任何东西(它只是死了),我认为没有Fiely存在是使sEnter更快。谢谢你指出这个问题的链接。我所做的路径范围是为了支持加载那些不在框架核心或项目目录中的模块,比如公共库。@RainLee,对。将其添加到include路径。在include_路径中列出路径的顺序很重要,请首先列出那些将获得最多include调用的路径,因为在找到正确的路径之前,服务器需要检查每个路径的相关开销都很小。因此,在您的情况下,您可能希望先列出您的框架目录,然后让它返回到其他目录。我创建的路径范围是为了支持加载那些不在框架核心或项目目录中的模块,如公共库。@RainLee,对。将其添加到include路径。在include_路径中列出路径的顺序很重要,请首先列出那些将获得最多include调用的路径,因为在找到正确的路径之前,服务器需要检查每个路径的相关开销都很小。因此,在您的情况下,您可能希望首先列出您的框架目录,然后让它返回到其他目录。