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()時使用這個變量。
相關文章
-
解決PHP的failed opening required問題的方法
人要想學習一點東西,就應該先學會謙遜。以下是小編爲大家搜索整理的解決PHP的failed opening required問題的方法,希望對大家有所幫助!更多精彩內容請及時關注我們應屆畢業生考試網!環境:WIN2003+IIS6+PHP5本機,2003下IIS -
Should Private Cars Be Encouraged in China高中英語作文
with the rapid development of economy in china, the number of people who own private cars is rising day after day. quite different views eist as to this e is no doubt that private cars have been playi -
英語閱讀:Covergirl unveils empowering brand update
It may have been founded 60 years ago old, but US cosmetics giant Covergirl is proving that you're never too old to reinvent yourself.The Coty-owned makeup brand, which has been attracting attenti -
關於javascript中encodeURI和decodeURI的使用方法
關於java script中encodeURI和decodeURI的使用方法 一、基本概念encodeURI和decodeURI是成對來使用的,因爲瀏覽器的`地址欄有中文字符的話,可以會出現不可預期的錯誤,所以可以encodeURI把非英文字符轉化爲英文編 -
Zend studio for eclipse中使php可以調用mysql相關函數的設置方
Zend studio for eclipse中使php可以調用mysql相關函數的設置方法教程如果直接調用mysql_connect會出現:Fatal error: Call to undefined function mysql_connect() 的錯誤解決辦法,找到zend studio 所在的`位置我的zen -
七年級英語Unit2Is this your pencil Period1說課稿
一.說教材本單元的主要內容是學會辨認物品的所有者,本節課爲SectionA Period1,既是本單元的基本語言內容,有爲後面知識的擴展和綜合語言運用奠定堅實的基礎。因此,上好本課時,既讓知識的學習有一定的延續性,又爲後面的教 -
最新的美文欣賞:Why American Culture is Unique
American culture is unique because it is nurtured, formed and developed under certain conditions, which are characteristically(特性)American. The major factors contributing to the making of this new n -
英語閱讀:VIT declines to acquire Ang Mo Kio property
The managers of Viva Industrial Trust (VIT) announced on Oct 9 that they have declined an offer to purchase an Ang Mo Kio property at $300 million from Ho Lee Group.Located along Ang Mo Kio Avenue 5, -
英語的美文:Why American Culture is Unique
American culture is unique because it is nurtured, formed and developed under certain conditions, which are characteristically(特性)American. The major factors contributing to the making of this new n -
linux中pagbuffer和cache的區別
Page cache和buffer cache一直以來是兩個比較容易混淆的概念,在網上也有很多人在爭辯和猜想這兩個cache到底有什麼區別,討論到最後也一直沒有一個統一和正確的結論,在我工作的這一段時間,page cache和buffer cache的概念