在另一个地方,我正在讨论以下问题:
我认为这段代码:
if(file_exists("amodule.inc.php"))
require_once("amodule.inc.php");
由于使用require_once
,是MISLEADING。
我认为 - 保持逻辑和“措辞”排成一行 - “include_once”是合适的。
就我的理解而言,“要求”和“包含”之间的唯一区别是“如果文件不存在则需要有后果(停止)而不是仅包含警告。”
但是,如果文件不存在,则不会执行require_once代码。因此,从我的观点来看,“要求”是误导。
从肤浅的角度来看,可以使用require_once和
来争论上述代码if(file_exists("amodule.inc.php"))
include_once("amodule.inc.php");
从我的观点来看,是“相同的”,不是。因为:
“粗略”分析(如项目的自动检查)会抛出一条消息,“amodule.inc.php”是一个重要的项目文件,代码显示的不是。
那么,那些人们会争辩吗?
答案 0 :(得分:1)
检查文件是否存在然后包含/要求它是无意义的。首先,它会使您的磁盘访问倍增,使操作速度提高两倍。其次,您可能遇到竞争条件问题,其中文件在file_exists
和include
调用之间被删除,从而产生错误。如果允许包含失败,只需使用include
而不事先file_exists
检查。如果不允许包含失败,请使用require
。这就是为什么存在这两种结构的原因。使用@
可选择禁止通知。
但是为什么首先允许文件包含失败?