requir與include的區別

2021-07-11 23:55:07 字數 3045 閱讀 8058

require()語句的效能與include()相類似,都是包括並執行指定檔案。不同之處在於:對include()語句來說,在執行檔案時每次都要進行讀取和評估;而對於require()來說,檔案只處理一次(實際上,檔案內容替換require()語句)。這就意味著如果可能執行多次的**,則使用require()效率比較高。另外一方面,如果每次執行**時是讀取不同的檔案,或者有通過一組檔案迭代的迴圈,就使用include()語句。

require的使用方法如:require("myfile.php"),這個語句通常放在php指令碼程式的最前面。php程式在執行前,就會先讀入require()語句所引入的檔案,使它變成php指令碼檔案的一部分。include使用方法和require一樣如:include("myfile.php"),而這個語句一般是放在流程控制的處理區段中。php指令碼檔案在讀到include()語句時,才將它包含的檔案讀取進來。這種方式,可以把程式執行時的流程簡單化。

php系統在載入php程式時有乙個偽編譯過程,可使程式執行速度加快。但incluce的文件仍為解釋執行。include的檔案中出錯了,主程式繼續往下執行,require的檔案出錯了,主程式也停了,所以包含的檔案出錯對系統影響不大的話(如介面檔案)就用include,否則用require。

require()和include()語句是語言結構,不是真正的函式,可以像php中其他的語言結構一樣,例如echo()可以使用echo("ab")形式,也可以使用echo "abc"形式輸出字串abc。require()和include()語句也可以不加圓括號而直接加引數。

include_once()和require_once()語句也是在指令碼執行期間包括執行指定檔案。此行為和include()語句及require()類似,使用方法也一樣。唯一區別是如果該檔案中的**已經被包括了,則不會再次包括。這兩個語句應該用於在指令碼執行期間,同乙個檔案有可能被包括超過一次的情況下,確保它只被包括一次,以避免函式重定義以及變數重新賦值等問題。

include引入檔案的時候,如果碰到錯誤,會給出提示,並繼續執行下邊的**。

require引入檔案的時候,如果碰到錯誤,會給出提示,並停止執行下邊的**。

用例子來說話,寫兩個php檔案,名字為test-include.php和test-require.php,注意相同的目錄中,不要存在乙個名字是test-nothing.php的檔案。

test-include.php

<?php

include 'test-nothing.php';

echo 'abc';

?>

test-require.php

<?php

require 'test-nothing.php';

echo 'abc';

?>

瀏覽http://localhost/test-include.php,因為沒有找到test-nothing.php檔案,我們看到了報錯資訊,同時,報錯資訊的下邊顯示了abc,你看到的可能是類似下邊的情況:

warning: include(test-nothing.php) [function.include]: failed to open stream: no such file or directory in d:\www\test-include.php on line 2

warning: include() [function.include]: failed opening 'test-nothing.php' for inclusion (include_path='.;c:\php5\pear') in d:\www\test-include.php on line 2

abc

瀏覽http://localhost/test-require.php,因為沒有找到test-nothing.php檔案,我們看到了報錯資訊,但是,報錯資訊的下邊沒有顯示abc,你看到的可能是類似下邊的情況:

warning: require(test-nothing.php) [function.require]: failed to open stream: no such file or directory in d:\www\test-require.php on line 2

fatal error: require() [function.require]: failed opening required 'test-nothing' (include_path='.;c:\php5\pear') in d:\www\test-require.php on line 2 

include()與require()的功能相同,用法上卻有一些不同,include()是有條件包含函式,而require()則是無條件包含函式。

例如下面例子,如果變數$somg為真,則將包含檔案somefile.php: 

if($some)

但無論$some取何值,下面的**將把檔案somefile.php包含進檔案裡:

if($something)

下面的例子充分說明了這兩個函式之間的不同:

$i = 1;

while ($i < 3)

可以從以上這段**中看出,每一次迴圈的時候,程式都將把同乙個檔案包含進去,很顯然這不是我們想要的,可以看出這段**希望在每次迴圈時,將不同的檔案包含進來,如果要完成這個功能,只能使用函式include():

$i = 1;

while ($i < 3)

include()執行時需要引用的檔案每次都要進行讀取和評估,require()執行時需要引用的檔案只處理一次(實際上執行時需要引用的檔案內容替換了require()語句)可以看出若有包含這些指令之一的**和可能執行多次的**,則使用require()效率比較高,若每次執行**時相讀取不同的檔案或者有通過一組檔案疊代的迴圈,就使用include(),可以給想要包括的檔名設定變數,當引數為 include()時使用這個變數。

include 與 include 的區別

在新的c 標準中,生成新標頭檔案的方法僅僅是將現有c 頭檔名中的 h 去掉。例如,變成了,變成了,等等。對於c標頭檔案,採用同樣的方法,但在每個名字前還要新增乙個c。所以c的變成了,變成了,等等。舊的c 標頭檔案是官方所反對使用的 即,明確列出不再支援 但舊的c標頭檔案則沒有 以保持對c的相容性 下...

include 與 include 的區別

預處理器發現 include指令後,就會尋找後邊的檔名並把這個檔案的內容包含到當前檔案中。被包含的檔案中的文字將替換源 檔案中的 include指令,就像您把被包含檔案中的全部內容鍵入到原始檔中的這個特定位置一樣。格式1 include 標頭檔案 格式2 include 自己寫的標頭檔案 在unix...

靜態include與動態include的區別分析

靜態include與動態include的區別分析 靜態include主要是對靜態頁面的引入,不會檢查所包含檔案的變化 include file include.html 動態include主要是對動態頁面的引入,它總是會檢查所引入的頁面的變化,如果所包含的資源在請求間發生變化 則下一次請求包含動作的...