PHP中include和require的區別
include和require在PHP中有什麼區別?下面yjbys小編為大家詳細講解,快來看看吧!
1、概要
require()語句的性能與include()相類似,都是包括並運行指定文件。不同之處在於:對include()語句來説,在執行文件時每次都要進行讀取和評估;而對於require()來説,文件只處理一次(實際上,文件內容替換require()語句)。這就意味着如果可能執行多次的代碼,則使用require()效率比較高。另外一方面,如果每次執行代碼時是讀取不同的文件,或者有通過一組文件迭代的循環,就使用include()語句。
require的使用方法如:require(""),這個語句通常放在PHP腳本程序的最前面。PHP程序在執行前,就會先讀入require()語句所引入的文件,使它變成PHP腳本文件的一部分。include使用方法和require一樣如:include(""),而這個語句一般是放在流程控制的處理區段中。PHP腳本文件在讀到include()語句時,才將它包含的文件讀取進來。這種方式,可以把程式執行時的流程簡單化。
incluce在用到時加載
require在一開始就加載
_once後綴表示已加載的不加載
PHP系統在加載PHP程序時有一個偽編譯過程,可使程序運行速度加快。但incluce的文檔仍為解釋執行。include的文件中出錯了,主程序繼續往下執行,require的文件出錯了,主程序也停了,所以包含的文件出錯對系統影響不大的話(如界面文件)就用include,否則用require。
require()和include()語句是語言結構,不是真正的函數,可以像php中其他的語言結構一樣,例如echo()可以使用echo("ab")形式,也可以使用echo "abc"形式輸出字符串abc。require()和include()語句也可以不加圓括號而直接加參數。
include_once()和require_once()語句也是在腳本執行期間包括運行指定文件。此行為和include()語句及require()類似,使用方法也一樣。唯一區別是如果該文件中的代碼已經被包括了,則不會再次包括。這兩個語句應該用於在腳本執行期間,同一個文件有可能被包括超過一次的情況下,確保它只被包括一次,以避免函數重定義以及變量重新賦值等問題。
2、詳情
2.1 報錯
include引入文件的時候,如果碰到錯誤,會給出提示,並繼續運行下邊的代碼。
require引入文件的時候,如果碰到錯誤,會給出提示,並停止運行下邊的代碼。
用例子來説話,寫兩個php文件,名字為和,注意相同的.目錄中,不要存在一個名字是的文件。
<?php
include '';
echo 'abc';
?>
<?php
require '';
echo 'abc';
?>
瀏覽http://localhost/,因為沒有找到文件,我們看到了報錯信息,同時,報錯信息的下邊顯示了abc,你看到的可能是類似下邊的情況:
Warning: include() [ude]: failed to open stream: No such file or directory in D:www on line 2
Warning: include() [ude]: Failed opening '' for inclusion (include_path='.;C:php5pear') in D:www on line 2
瀏覽http://localhost/,因為沒有找到文件,我們看到了報錯信息,但是,報錯信息的下邊沒有顯示abc,你看到的可能是類似下邊的情況:
Warning: require() [ire]: failed to open stream: No such file or directory in D:www on line 2
Fatal error: require() [ire]: Failed opening required 'test-nothing' (include_path='.;C:php5pear') in D:www on line 2
2.2 條件引用
include()與require()的功能相同,用法上卻有一些不同,include()是有條件包含函數,而require()則是無條件包含函數。
例如下面例子,如果變量$somg為真,則將包含文件:
if($some){
include '';
}
但無論$some取何值,下面的代碼將把文件包含進文件裏:
if($something){
require '';
}
下面的例子充分説明了這兩個函數之間的不同:
$i = 1;
while ($i < 3) {
require "somefile.$";
$i++;
}
可以從以上這段代碼中看出,每一次循環的時候,程序都將把同一個文件包含進去,很顯然這不是我們想要的,可以看出這段代碼希望在每次循環時,將不同的文件包含進來,如果要完成這個功能,只能使用函數include():
$i = 1;
while ($i < 3) {
include "somefile.$";
$i++;
}
2.3 文件引用方式
include()執行時需要引用的文件每次都要進行讀取和評估,require()執行時需要引用的文件只處理一次(實際上執行時需要引用的文件內容替換了require()語句)可以看出若有包含這些指令之一的代碼和可能執行多次的代碼,則使用require()效率比較高,若每次執行代碼時相讀取不同的文件或者有通過一組文件疊代的循環,就使用include(),可以給想要包括的文件名設置變量,當參數為 include()時使用這個變量。
-
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想説説javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項。要傳遞給Function對象的從0開始的參數值...
-
如何理解Javascript的caller,callee,call,apply區別
在提到上述的概念之前,首先想説説javascript中函數的隱含參數:argumentsarguments該對象代表正在執行的函數和調用它的函數的參數。[function.]arguments[n]參數function:選項。當前正在執行的Function對象的名字。n:選項。要傳遞給Function對象的從0開始的參數值...
-
php程序員的簡歷模板
日子如同白駒過隙,新一輪的招聘又在朝我們招手,這時一份好的簡歷可以起到很好的.作用哦。那麼如何寫簡歷才簡練、明確呢?以下是小編收集整理的php程序員的簡歷模板,希望能夠幫助到大家。基本簡歷姓名:黃先生國籍:中國現在所在地:廣州民族:漢族户口所在地:潮州身材:170cm...
-
JavaScript彈窗基礎教程
confirm()意既確認框confirm...
相關文章
- 英語閲讀:VIT declines to acquire Ang Mo Kio property
- 關於javascript中encodeURI和decodeURI的使用方法
- linux中pagbuffer和cache的區別
- 解決PHP的failed opening required問題的方法
- 最新的美文欣賞:Why American Culture is Unique
- 英語的美文:Why American Culture is Unique
- Should Private Cars Be Encouraged in China高中英語作文
- 英語閲讀:Covergirl unveils empowering brand update
- 七年級英語Unit2Is this your pencil Period1説課稿
- Zend studio for eclipse中使php可以調用mysql相關函數的設置方