2016-12-28 130 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