如果要包含PHP文件,应该使用哪一个?
if(file_exists($file) require "$file";
或
if(is_readable($file) require "$file";
答案 0 :(得分:26)
file_exists()
或is_readable()
如果要包含PHP文件,应该使用哪一个?
这取决于您是否想知道仅文件或是否存在目录,或者两者是否正常,以及是否需要检查是否可读。
有时你只关心文件和/或目录存在,而不需要阅读,有时候你还需要阅读。
检查文件或目录是否存在。
如果您明确只想知道文件是否存在,则会返回误报,如果它是目录,则返回true。
判断文件或目录是否存在且可读。
如果您明确只想知道文件是否可读,则可能会返回误报,如果它是目录,则可能返回true。
您未提及的其他选项,但可能需要:
判断它是否存在并且是常规的文件(不是目录)。
判断它是否存在并且是目录(不是文件)。
如果您想检查存在并且:
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停止,因为要求失败,但文件只是一个文章图像或用户头像 - 你真的不想提供网站导航,徽标,链接,各种页面文本和内容只是因为丢失的文章图片?
VITAL:
如果该文件是允许提供整个页面内容的数据库连接类,则该文件不存在可能需要系统停止。
当然,你应该有某种退出策略,比如提供404页面或错误信息 - “抱歉有错,我们会调查它”等。
非活力:
有时文件不存在,或者至少不会对应用程序的其余部分造成损害
例如,如果图像文件不存在,您可以提供消息或默认图像,例如,如果未找到他们的用户头像将只有默认头像。
答案 1 :(得分:9)
答案是: is_readable()。
bool is_readable(string $ filename)
判断文件是否存在 可读的。
答案 2 :(得分:6)
如果您要转到require
文件,则错误检查没有意义。使用require
而不是include
的目的是在文件不存在时继续执行脚本。
如果您不关心文件是否存在,只需使用include
。
答案 3 :(得分:4)
if(is_file($file) && is_readable($file))
因为is_readable对于目录也是如此