如何在php中处理include_once循环?

时间:2016-12-28 07:38:02

标签: php php-5.3 php-5.4

我有3个不同的文件 -

  1. fileMainIncludeEverywhere.php

    ...
    include_once('fileMinorInclude.php');
    ?>
    
  2. fileMinorInclude.php

    ...
    include_once('fileMainIncludeEverywhere.php');
    ...
    
  3. fileToRun.php

    ...
    include_once('fileMainIncludeEverywhere.php');
    ...
    
  4. 我有很多文件,例如 fileToRun.php

    目前我的代码中没有任何错误,但我想知道是否会出现这种情况会失败?

2 个答案:

答案 0 :(得分:1)

我认为在这种情况下没有错误。由于include_once将仅首次加载文件,因此将针对同一文件拒绝即将发生的加载请求。

所以从你的例子:

  1. fileToRun.php将加载fileMainIncludeEverywhere.php(第一次通话)
  2. fileMainIncludeEverywhere.php将加载fileMinorInclude.php(第一次通话)
  3. fileMinorInclude.php会调用加载fileMainIncludeEverywhere.php但会被拒绝,因为它已在第一步中加载。
  4. 希望它会有所帮助。

答案 1 :(得分:1)

include_once

  

include_once语句在执行脚本期间包含并评估指定的文件。这是一种类似于include语句的行为,唯一的区别是如果文件中的代码已经包含在内,则不会再包含,并且include_once返回TRUE。顾名思义,该文件只包含一次。

这里"文件中的代码"还需要执行PHP文件。

请注意,除非您有使用include_once()的具体原因(例如包括可选模板组件),否则使用require_once()代替include_once()通常是最佳做法。这是因为如果找不到所需的资源,require_once()将终止(fail fast),并且找不到它应该是终端失败。