2016-12-28 83 views
-1

我有3个不同的文件 -如何在php中处理include_once循环?

  1. fileMainIncludeEverywhere.php

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

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

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

我有很多的文件像fileToRun.php

目前我没有在我的代码中遇到任何错误,但我想知道是否有任何情况下会失败?

+0

不会有错误。你应该在发布SO之前阅读手册 - https://secure.php.net/manual/en/function.include-once.php。我认为这很清楚? – spinkus

+0

当你测试它时发生了什么? – symcbean

+0

@S。Pinkus我已经阅读了手册,它写道,如果文件已包含在内,它将不会再被包含。但就我而言,该文件甚至没有被包含一次。 – xRahul

回答

1

我觉得在这种情况下没有错误。由于include_once只会首次加载文件,因此即将到来的加载请求将被拒绝。

所以从你的例子:

  1. fileToRun.php将加载fileMainIncludeEverywhere.php(第一次调用)
  2. fileMainIncludeEverywhere.php将加载fileMinorInclude.php(第一次调用)
  3. fileMinorInclude.php将调用加载fileMainIncludeEverywhere.php但它会被拒绝,因为它已经在第一步加载。

希望它会有所帮助。

+0

这似乎是一个很好的推理。有没有人在他们的代码库中做过这件事? – xRahul

1

include_once

的include_once语句包括和脚本的执行过程中运行指定文件。这与include语句的行为类似,唯一的区别是如果已经包含来自文件的代码,则不会再包含该代码,并且include_once返回TRUE。顾名思义,该文件将只包含一次。

这里“代码从文件”也需要执行的PHP文件。

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

+0

我有一个特殊的要求,我希望它不会被包括在内,如果出现一些错误(就像你说的可选组件)。 – xRahul