0

在另一个地方,我正在讨论以下问题:

我认为这段代码:

if(file_exists("amodule.inc.php")) 
     require_once("amodule.inc.php");  

由于使用 . 是误导性的require_once

我认为——为了保持逻辑和“措辞”一致——“include_once”是合适的。

据我了解,“require”和“include”之间的唯一区别是“如果文件不存在,require 会产生后果(停止),而 include 只会发出警告。

但是,如果文件不存在,则不会执行 require_once 代码。因此,从我的角度来看,“要求”会产生误导。

从表面上看,有人可能会争辩说,上面的代码使用了 require_once 和

if(file_exists("amodule.inc.php")) 
     include_once("amodule.inc.php");

是“相同的”,在我看来,不是。因为:

“粗略”分析(如项目的自动检查)会抛出一条消息,即“amodule.inc.php”是一个重要的项目文件,代码显示不是。

那么,你们会如何争论呢?

4

1 回答 1

1

检查文件是否存在然后包含/要求它是无稽之谈。首先,它使您的磁盘访问加倍,使操作速度比需要的慢一倍。其次,您可能会遇到竞争条件问题,其中文件在file_existsandinclude调用之间被删除,从而产生错误。如果允许包含失败,则直接使用include而无需事先file_exists检查。如果不允许包含失败,请使用require. 这正是这两种结构存在的原因。用于@选择性地抑制通知。

但是为什么首先允许文件包含失败呢?

于 2013-10-06T09:33:54.363 回答