天天看點

淺析PHP使用include和require時的差別

https://www.php.cn/php-weizijiaocheng-406651.html

淺析PHP使用include和require時的差別

原創2018-07-18 10:42:2801321

這篇文章給大家分享的内容是PHP中檔案函數include和require的差別,有需要的朋友可以參考一下。

例如下面的代碼:

淺析PHP使用include和require時的差別

一句話總結:

1.include() 産生一個警告

2.require() 則導緻一個緻命錯誤

換句話說,如果你想在丢失檔案時停止處理頁面,那就别猶豫了,用 require() 吧。include() 就不是這樣,腳本會繼續運作。同時也要确認設定了合适的include_path。

就是說再解析程式時即讀取require的檔案,而不是解析後,如果不能讀取到被require的檔案,就不能進行下一步動作。是以,不被正确包含就會導緻程式的檔案,用require比較好。可能效率上也略微高點。

注意:require() 無論如何都會包含檔案,而include() 可以有選擇地包含:

淺析PHP使用include和require時的差別

上面的代碼中:x.php 一定會被包含,而 s.php 一定不會被包含。

二種方式提供不同的使用彈性:

require 的使用方法如 require(“MyRequireFile.php”); 。這個函式通常放在 PHP 程式的最前面,PHP 程式在執行前,就會先讀入 require 所指定引入的檔案,使它變成 PHP 程式網頁的一部份。

include 使用方法如 include(“MyIncludeFile.php”); 。這個函式一般是放在流程控制的處理區段中。PHP 程式網頁在讀到 include 的檔案時,才将它讀進來。這種方式,可以把程式執行時的流程簡單化。

一、使用文法和簡介

1、include()

文法:include(/path/to/filename)

include()語句将在其被調用的位置處包含一個檔案。包含一個檔案與在該語句所在位置複制制定檔案的資料具有相同内容的效果。

使用include()時可以忽略括号。

可以根據條件來執行include()語句。在條件語句中使用include()有個怪現象,它必須包圍在語句塊大括号中,或者用其他語句包圍符括起來。

2、include_once()

文法:include_once(filename)

include_once() 語句在腳本執行期間包含并運作指定檔案。此行為和 include() 語句類似,唯一差別是include_once()會先判斷一下這個檔案在之前是否已經被包含過,如已經包含,則忽略本次包含。

include_once() 應該用于嵌套包含的情況下,想確定它隻被包含一次以避免函數重定義,變量重新指派等問題。

小結:include_once()函數的作用與include相同,不過它會首先驗證是否已經包含了該檔案。如果已經包含,則不再執行include_once。否則,則必須包含該檔案。除了這一點與include完全相同。

3、require()

文法:require(filename)

require()在很大程度上與include相同,都是将一個模闆檔案包含到require調用坐在的位置。

require和include之間有兩點重要的差別。首先,無論require的位置如何,制定檔案都将包含到出現require的腳本中。例如,即使require放在計算結果為假的if語句中,依然會包含指定檔案。

第二個重要的差別是:require出錯時,腳本将停止運作,而在使用include的情況下,腳本将繼續執行。

4、require_once()

文法:require_once(filename)

require_once() 語句在腳本執行期間包含并運作指定檔案。此行為和 require() 語句類似,唯一差別是require_once()會先判斷一下這個檔案在之前是否已經被包含過,如已經包含,則忽略本次包含。

require_once() 應該用于嵌套包含的情況下,想確定它隻被包含一次以避免函數重定義,變量重新指派等問題。

小結:随着網站越來越大,可能會出現重複包含某些檔案。這也許不是問題,但又是修改了所包含檔案的變量後,卻由于後面再次包含原來的檔案而被覆寫,可能不希望出現這種情況。還可能出現另一個問題,即所包含檔案中函數名的沖突。使用require_once就可以解決這些問題。

require_once函數確定檔案隻包含一次。在遇到require_once後,後面再試圖包含相同的檔案時将被忽略。

二、差別總結

1、include()與require()語句差別。

兩者差別:這兩種結構除了在如何處理失敗之外完全一樣。

include() 産生一個警告,腳本會繼續運作。

require() 則導緻一個緻命錯誤,腳本會停止運作。

換句話說,如果想在遇到丢失檔案或遇到錯誤時停止處理頁面就用 require()。如果想在遇到錯誤時繼續處理頁面就用 include()。

注意在 PHP 4.3.5 之前,包含檔案中的文法錯誤不會導緻程式停止,但從此版本之後會。

2、include_once()、require_once()與include()、require()的差別

include_once()和require_once()一樣,應該用于在腳本執行期間同一個檔案有可能被包含超過一次的情況下,想確定它隻被包含一次以避免函數重定義,變量重新指派等問題。這就是include_once()和require_once()與include() 和require()的主要差別。

三、需要注意的問題

1.路徑問題

特别是嵌套包含的時候,一定得注意包含檔案的路徑。

比如 A檔案包含了B檔案,B檔案包含了C檔案,A,B,C檔案都不在同一個檔案夾下,這個時候往往很容易出錯誤。

解決方案:可以使用 dirname(FILE) 語句,這句的意思是獲得目前腳本的絕對路徑。如:require_once(dirname(FILE).’/config.php’);

2.效率問題

include_once(),require_once(),與include(),require()比較,效率要低一些,因為他們至少得先判斷一下這個檔案是否已包含。這一問題在PHP5版本有很大改進,不過效率還是有差别。

相關推薦:

php中include_once,require_once,和include,require的使用場景和差別。

PHP中include和require的差別,phpincluderequire

以上就是淺析PHP使用include和require時的差別的詳細内容,更多請關注php中文網其它相關文章!