当您想要包含 PHP 文件时应该使用哪个?
if(file_exists($file) require "$file";
或
if(is_readable($file) require "$file";
?
最佳答案
file_exists()
oris_readable()
Which one should you use when you want to include a PHP file?
这取决于您是否想知道仅一个文件或一个目录是否存在,或者两者是否都可以,以及您是否需要检查是否可读.
有时你只关心文件和/或目录是否存在,不需要读取,有时你也需要读取。
选项
检查文件或目录是否存在。
如果您明确只想知道文件 是否存在,这将返回误报,如果它是目录,则返回真。
判断文件或目录是否存在且可读。
如果您明确只想知道文件 是否可读,这可能会返回误报,如果它是一个目录则可能返回真。
您没有提到但可能需要的其他选项:
判断它是否存在并且是一个普通的文件(不是目录)。
判断它是否存在并且是一个目录(不是文件)。
解决方案&答案
如果你想检查是否存在并且:
- 只是一个文件:使用
is_file()
- 只是一个目录:使用
is_dir()
- 是文件还是目录:使用
file_exists()
如果你想检查是否存在并且可读:
- 并且只是文件:使用
is_file()
和is_readable()
- 并且只是目录:使用
is_dir()
和is_readable()
- 并且是文件或目录:使用
is_readable()
您不需要同时使用 file_exists()
和 is_readable()
因为 is_readable()
还会检查 file_exists ()
.
将 is_readable()
与 is_file()
或 is_dir()
配对只是为了检查是否可读特别是仅一个文件或特别是 仅在一个目录中。
依赖需求
与大多数 PHP 和“什么是最好的方法/函数/等等”一样 - 这取决于场景。
仅仅依靠 require
来管理系统是否挂起并不是很有用。想象一下所需的文件不可用,因此 PHP 因 require 失败而停止,但该文件只是一篇文章图片或用户头像——你真的不想仅仅因为网站导航、 Logo 、链接、各种页面文本和内容而提供服务吗?缺少文章图片?
重要的:
如果文件是一个数据库连接类,它允许提供整个页面内容,那么文件不存在可能需要系统暂停。
当然,您应该有某种退出策略,例如提供 404 页面或错误消息 - “抱歉,出现错误,我们会调查”等。
非生命体征:
文件不存在有时是有效的,或者至少不会对应用程序的其余部分造成损害。
例如,如果图像文件不存在,您可以提供一条消息或默认图像,例如如果找不到用户头像,则用户头像将只有一个默认头像。
关于php - file_exists() 或 is_readable(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6604726/