包含檔案include和require在php中的區別(含詳解)

2020-07-16 10:05:57

包含檔案include和require在php中的區別(含詳解)

一 使用語法和簡介

1、include()語法:

include(/path/to/filename)

include()語句將在其被呼叫的位置處包含一個檔案。包含一個檔案與在該語句所在位置複製制定檔案的資料具有相同內容的效果。

使用include()時可以忽略括號。在條件語句中使用include(),它必須包圍在語句塊大括號中,或者用其他語句包圍符括起來。

2、include_once()語法:

include_once(filename)

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

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()會先判斷一下這個檔案在之前是否已經被包含過,如已經包含,則忽略本次包含。

二 區別總結

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

範例一

include('hello.php');
echo 'include test final!';//include報錯,但是會繼續執行,顯示:include test final!
require('hello.php');
echo 'require test final!';//require報錯,停止程式碼的執行。

小結:

⑴ include() 產生一個警告,指令碼會繼續執行。

⑵ require() 則導致一個致命錯誤,指令碼會停止執行。

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

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

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

範例二

<?php
 if(FALSE){
   require('x.php');
 }
 if(FALSE){
   include('s.php');
 }
?>

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

3、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和require在php中的區別(含詳解)的詳細內容,更多請關注TW511.COM其它相關文章!