PHP中include與require的區別

PHP的include()和require()是兩種包含外部文件的方法,對於這兩種方法有什麼區別,很多初學者可能不是很明白。下面總結一下PHP include()和require()的區別:

1:加載失敗的處理方式不同:

include()會產生一個警告,而require()則導致一個致命的錯誤(出現錯誤,腳本停止執行)

require() :如果文件不存在,會報出一個fatal error.腳本停止執行

include() : 如果文件不存在,會給出一個 warning,但腳本會繼續執行

這裏特別要注意的是:使用include()文件不存在時,腳本繼續執行,這種情況只出現在PHP 4.3.5之前

推薦使用require_once()和include_once(),可以檢測文件是否有重複包含。

 

2.php性能

對include()來說,在 include()執行時文件每次都要進行讀取和評估;

而對於require()來說,文件只處理一次(實際上,文件內容替換了require()語句)。

這就意味着如果有包含這些指令之一的代碼和可能執行多次的代碼,則使用require()效率比較高。

另一方面,如果每次執行代碼時相讀取不同的文件,或者有通過一組文件疊代的循環,就使用include(),

因爲可以給想要包括的文件名設置一個變量,當參數爲include()時使用這個變量。

 

3.二種方式提供不同的使用彈性。

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

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

require即使在條件位FALSE的時候也會被包含,而include只會在執行到改位置時候纔會去執行。

require_once() 語句在腳本執行期間包括並運行指定文件。此行爲和 require() 語句類似,唯一區別是如果該文件中的代碼已經被包括了,則不會再次包括。require_once()函數的作用和 require() 是幾乎相同的

include_once() 語句在腳本執行期間包括並運行指定文件。此行爲和 include() 語句類似,唯一區別是如果該文件中的代碼已經被包括了,則不會再次包括。include_once()函數的作用和 include() 是幾乎相同的

require_once的作用是會檢查之前是否加載過該文件,如果沒有加載則加載 如果加載過就不再次加載,比如某文件定義了一個類型 如果兩次加載該文件會出現錯誤

以上就是PHP include()和require()方法的區別。

 

4. 程序的處理不同。


  require相當於預處理,即它是在程序運行之前就被執行的。所以它是不可以用在控制語句中的,如if中。如果不好理解看完下面的include,對比一下就清楚了。
include相當於函數,它是在程序運行時執行的。所以它可以用在控制語句中。

if(1 > 0){
  include 'config.php';
}else{
  include 'setting.php';
}

這段代碼運行的時候,config.php這個文件會被引用。而setting.php不會。
類似的代碼:
if(1 > 0){
  require 'config.php';
}else{
  require 'setting.php';
}

上面這部分代碼,config.php及setting.php都會被引用。因爲在沒有運行到if這個控制語句前,兩個require語句都運行了。

 

Tip:使用require和include要注意如果重複引用一個文件的時候,而這個文件裏頭又有函數定義的話就會報錯。

Fatal error: Cannot redeclare  ...

所以要在文件裏面判斷一下這個函數是否存在,可以使用function_exists('函數名')

發佈了82 篇原創文章 · 獲贊 36 · 訪問量 65萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章