首頁  >  文章  >  後端開發  >  php使用include 和require引入檔案的差別是什麼?

php使用include 和require引入檔案的差別是什麼?

怪我咯
怪我咯原創
2017-07-06 10:19:361164瀏覽

require()語句的效能與include()相類似,都是包含並執行指定檔。不同之處在於:對include()語句來說,在執行檔案時每次都要讀取和評估;而對於require()來說,檔案只處理一次(實際上,檔案內容替換require()語句)。

最近有小夥伴,提問了有關於require_once的有關問題,對於程式中遇到的問題,無聊難度大小,只要bug存在就還值得我們去探索,去解決。針對這個問題,我把include和require的詳細用法進行歸納。 (結合查閱資料和自己的理解,整合出來的)希望能給有需要​​的小夥伴一點幫助。

引入檔案:

首先需要一個php檔案:

<?php
class shao//类名必须和文件名相同!!!
{
  public $xxx="666";
}
$shili = new shao();
echo $shili->xxx;
?>

引用:

<?php
//引入文件
include "shao.php";//引用文件;只能引用一遍
//引用多个则费劲
//include_once("shao.php");//一次又一次
//也可以require ("shao.php");
?>

其中include與require的差異:

require:

執行到require()時,只會讀取一次檔案,故常放在程式開頭,檔案引入後PHP會將網頁檔重新編譯,讓引入檔成為原先網頁的一部分。

require() :無條件包含,如果檔案不存在,會報出一個fatal error.當腳本停止執行
require遇到錯誤時,直接報錯並停止執行程式

include:

執行到include()時,每次都會讀取檔案,故常用於流程控制的區段,如條件判斷或迴圈中。
include() : 有條件包含,如果檔案不存在,會給予一個warning,但腳本會繼續執行
include遇到錯誤時(引用的檔案不存在),PHP只是報錯,但程式會繼續執行下去

 以下為補充:

#1. include有回傳值,而require則沒有。
2. include()包含並執行指定檔案在處理失敗時include() 產生警告,被匯入的程式碼都會被執行,而且這些程式在執行的時候會擁有和原始檔中呼叫到include( )語句的位置相同的變數範圍。你可以匯入同一個伺服器中的靜態頁面。
3. include_once()的作用和include()是幾乎相同的唯一的差別在於include_once()會先檢查要導入的檔案是不是已經在該程序中的其它地方被導入過了,如果有的話就不會再重複導入(這項功能有時候是很重要的,比方說要導入的裡面宣告了一些你自行定義好的函數,那麼如果在同一個程序重複導入這個文件,在第二次導入的時候會發生錯誤訊息,因為PHP不允許相同名稱的函數重複宣告第二次)。
4. require()會將目標檔案的內容讀入,並且把自己本身代換成這些讀入的內容 在處理失敗時require() 則導致一個致命錯。 這個讀入並且代換的動作是在PHP引擎編譯你的程式碼的時候發生的,而不是發生在PHP引擎開始執行編譯好的程式碼的時候(PHP 3.0引擎的工作方式是編譯一行執行一行,但到了PHP 4.0以後就有所改變了,PHP 4.0是先把整個程式碼全部編譯完成後,再將這些編譯好的程式碼一次執行完畢,在編譯的過程中不會執行任何程式碼)。 require()通常會來導入靜態的內容,而include()則適合使用導入動態的程式碼。
5. 如同include_once(),require_once()會先檢查目標檔案的內容是不是在之前就已經導入過了,如果是的話,便不會再重複導入同樣的內容。
6. require是無條件包含也就是如果一個流程裡加入require,無論條件成立與否都會先執行require。
7. require通常放在PHP程式的最前面,PHP程式在執行前,就會先讀入require所指定引入的文件,使它變成PHP程式網頁的一部份。常用的函數,亦可以這個方法將它引入網頁中。
8. include一般是放在流程控制的處理部分PHP程式網頁在讀到include的檔案時,才將它讀進來。這種方式可以把程式執行時的流程簡單化。

建議使用require_once()和include_once(),可以偵測檔案是否有重複包含。

自動載入

#被引用的php檔案:

<?php
class shao//类名必须和文件名相同!!!
{
  public $xxx="666";
}

?>

自動載入:

<?php
function autoload($asd)
{
  require $asd.".php";//可填地址查找
}
$shili = new shao();
echo $shili->xxx;
?>


以上是php使用include 和require引入檔案的差別是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn