「PHP」include()、include_once()、require()、require_once()的用法及區別
(1)為神馬要使用include、include_once、require、require_once?
因為要使用函式自定義庫,官方一點來說就是:函式庫並不是定義函式的PHP語法,而是程式設計時的一種設計模式。函式是結構化程式設計的模組,是實現程式碼重用的核心,為了更好的組織程式碼,使自定義的函式可以在同一個專案的多個檔案中使用,通常將多個自定義的函式組織到同一個檔案或多個檔案中。這些收集函式定義的檔案就是建立的PHP函式庫。如果在PHP指令碼中想使用這些檔案中定義的函式,就需要使用include()、include_once()、require()、require_once()中的一個函式,將函式庫檔案載入到指令碼程式中。
(2)include()、require()的區別
require()語句的效能與include()類似,都是包括並執行指定檔案。不同之處在於,對include()語句來說,在執行檔案時每次都要進行檔案讀取和評估;而對於require()語句來說,檔案只處理一次(實際上,檔案內容替換了require()語句)。這就意味著如果可能執行多次的程式碼,則使用require()效率比較高。另一方面,如果每次執行的程式碼時是讀取不同的檔案,或者通過一組檔案迭代的迴圈,就使用include()語句。
require()語句的使用方法如require(“index.php”),這個語句通常放在PHP指令碼程式的最前面。PHP程式在執行前,就會先讀入require()語句所引入的檔案,使它變成PHP指令碼的一部分。include()語句的使用方法和require()語句一樣如include("index.php”)。而這個語句一般是放在流程控制的處理區段中。PHP指令碼檔案在讀到include()語句時,才將它包含的檔案都讀進來。這種方式,可以把程式執行時的流程簡單化。
require()和include()語句時語言結構,不是真正的函式,可以在使用的時候不加圓括號而直接加引數,如include “index.php”。
require 和 include幾乎完全一樣,除了處理失敗的方式不同之外。require 在出錯時產生 E_COMPILE_ERROR
級別的錯誤。換句話說將導致指令碼中止,而include只產生警告(E_WARNING
),指令碼會繼續執行。
(3)include_once()和require_once()
include_once()和require_once()語句也是在指令碼執行期間包括並執行指定檔案。此行為和include()語句及require()語句類似,使用方法也一樣。唯一不同的是如果該檔案中的程式碼已經被包括了,則不會再次包括。這兩個語句應該用於指令碼執行期間,同一個檔案有可能被包括超過一次的情況下,確保它只被包括一次,以避免函式重定義及變數重新賦值等問題。