在PHP指令碼中想使用檔案中定義的函數,就需要使用
include()、include_once()、require()和 require_once() 中的一個函數,將函數庫檔案載入指令碼程式中。上一章節中我們談到了在php中如何使用自訂函數庫,這一章節就具體的談談require()和include()的區別聯絡有哪些。
PHP提供了兩種包含外部檔案的方法:require()和include()都屬於伺服器端引用(Server Side Includes)中的常用方法。
require 的使用方法如 require("MyRequireFile.php"); 。這個函數通常放在 PHP 程式的最前面,PHP 程式在執行前,就會先讀入 require 所指定引入的檔案,使它變成 PHP 程式網頁的一部份。常用的函數,亦可以這個方法將它引入網頁中。require包含檔案的時候是絕對的包含,如果被包含的檔案不存在那麼會產生一個致命錯誤(fatal error),在錯誤發生後下面的指令碼程式將不會執行,此外,因為require語句相當於將另一個源檔案的內容完全複製到本檔案中,所以一般將其放在源檔案的起始位置,用於引用需要使用的公用函數檔案和公用類檔案等。
include 使用方法如 include("MyIncludeFile.php"); 。這個函數一般是放在流程式控制制的處理部分中。PHP 程式網頁在讀到 include 的檔案時,才將它讀進來。這種方式,可以把程式執行時的流程簡單化。include的包含檔案是相對的,如果被包含檔案不存在,那麼會產生一個warning警告,但是下面的指令碼程式繼續執行,此外, include包含的檔案一般寫在程式執行中。
include()和require()的區別
include()和require()的區別 這相信是PHP中最基本的問題了,這兩個的用途是完全一樣的,不一定非得哪個放在最前面哪個放在中間。他們最根本的區別在於錯誤處理的方式不一樣。
require() :如果檔案不存在,會報出一個fatal error.指令碼停止執行
include() : 如果檔案不存在,會給出一個 warning,但指令碼會繼續執行
php的require()效能與include()相類似。不同之處在於,對include()來說,在 include()執行時檔案每次都要進行讀取和評估;而對於require()來說,檔案只處理一次(實際上,檔案內容替換了require()語 句)。這就意味著如果有包含這些指令之一的代碼和可能執行多次的代碼,則使用require()效率比較高。另一方面,如果每次執行代碼時相讀取不同的文 件,或者有通過一組檔案疊代的迴圈,就使用include(),因為可以給想要包含的檔案名設定一個變數,當參數為include()時使用這個變數。
其他一些聯絡與區別的補充
1. include有傳回值,而require沒有。
2. include()包括並運行指定檔案 在處理失敗時include() 產生一個警告,被匯入的程式碼都會被執行,而且這些程式在執行的時候會擁有和源檔案中呼叫到include()語句的位置相同的變數範圍。你可以匯入同一個伺服器中的靜態頁面。
3. include_once()的作用和include()是幾乎相同的
唯一的差別在於include_once()會先檢查要匯入的檔案是不是已經在該程式中的其它地方被匯入過了,如果有的話就不會再次重複匯入(這項功能有時候是很重要的,比方說要匯入的裡面宣告了一些你自行定義好的函數,那麼如果在同一個程式重複匯入這個檔案,在第二次匯入的時候便會發生錯誤訊息,因為PHP不允許相同名稱的函數被重複宣告第二次)。
4. require()會將目標檔案的內容讀入,並且把自己本身代換成這些讀入的內容 在處理失敗時require() 則導致一個致命錯。
5. 如同include_once(),require_once()會先檢查目標檔案的內容是不是在之前就已經匯入過了,如果是的話,便不會再次重複匯入同樣的內容。
6. require是無條件包含也就是如果一個流程裡加入require,無論條件成立與否都會先執行require。
下面的例子充分說明了這兩個函數之間的不同:
寫兩個php檔案,名字為test-include.php和test-require.php,注意相同的目錄中,不要存在一個名字是test1.php的檔案。
test-include.php<?phpinclude 'test1.php';echo 'abc';?>
運行上面的代碼,因為沒有找到test1.php檔案,我們看到了報錯資訊,同時,報錯資訊的下邊顯示了abc,你看到的可能是類似下邊的情況:
Warning: include(test1.php) [function.include]: failed to open stream: No such file or directory in D:\www\test-include.php on line 3Warning: include() [function.include]: Failed opening 'test1.php' for inclusion (include_path='.;C:\php5\pear') in D:\www\test-include.php on line 3abc
test-require.php<?phprequire 'test1.php';echo 'abc';?>
運行上面的代碼,因為沒有找到test1.php檔案,我們看到了報錯資訊,但是,報錯資訊的下邊沒有顯示abc,你看到的可能是類似下邊的情況:
Warning: require(test1.php) [function.require]: failed to open stream: No such file or directory in D:\www\test-require.php on line 3Fatal error: require() [function.require]: Failed opening required 'test1' (include_path='.;C:\php5\pear') in D:\www\test-require.php on line 3
【相關教程推薦】
1. 《php.cn獨孤九賤(4)-php視頻教程》
2. 視頻教程:函數匯入與檔案包含:include和require的使用
3. php實戰視頻教程