天天看點

PHP中include()與require()的差別說明

<code>require</code> <code>的使用方法如 </code><code>require</code><code>(</code><code>"MyRequireFile.php"</code><code>); 。這個函數通常放在 PHP 程式的最前面,PHP 程式在執行前,就會先讀入 </code><code>require</code> <code>所指定引入的檔案,使它變成 PHP 程式網頁的一部份。常用的函數,亦可以這個方法将它引入網頁中。</code>

<code>include</code> <code>使用方法如 </code><code>include</code><code>(</code><code>"MyIncludeFile.php"</code><code>); 。這個函數一般是放在流程控制的處理部分中。PHP 程式網頁在讀到 </code><code>include</code> <code>的檔案時,才将它讀進來。這種方式,可以把程式執行時的流程簡單化。</code>

<code>他們兩個的用途是完全一樣的,不一定非得哪個放在最前面哪個放在中間。他們最根本的差別在于錯誤處理的方式不一樣。 </code>

<code>require</code><code>一個檔案存在錯誤的話,那麼程式就會中斷執行了,并顯示緻命錯誤 </code>

<code>include</code><code>一個檔案存在錯誤的話,那麼程式不會中端,而是繼續執行,并顯示一個警告錯誤。 </code>

<code>以下為補充:</code>

<code>1. </code><code>include</code><code>有傳回值,而</code><code>require</code><code>沒有。 </code>

<code>2. </code><code>include</code><code>()包括并運作指定檔案 在處理失敗時</code><code>include</code><code>() 産生一個警告,被導入的程式代碼都會被執行,而且這些程式在執行的時候會擁有和源檔案中呼叫到</code><code>include</code><code>()語句的位置相同的變量範圍。你可以導入同一個伺服器中的靜态頁面。 </code>

<code>3. </code><code>include_once</code><code>()的作用和</code><code>include</code><code>()是幾乎相同的 </code>

<code>唯一的差别在于</code><code>include_once</code><code>()會先檢查要導入的檔案是不是已經在該程式中的其它地方被導入過了,如果有的話就不會再次重複導入(這項功能有時候是很重要的,比方說要導入的裡面宣告了一些你自行定義好的函數,那麼如果在同一個程式重複導入這個檔案,在第二次導入的時候便會發生錯誤訊息,因為PHP不允許相同名稱的函數被重複宣告第二次)。 </code>

<code>4. </code><code>require</code><code>()會将目标檔案的内容讀入,并且把自己本身代換成這些讀入的内容 在處理失敗時</code><code>require</code><code>() 則導緻一個緻命錯。 </code>

<code>這個讀入并且代換的動作是在PHP引擎編譯你的程式代碼的時候發生的,而不是發生在PHP引擎開始執行編譯好的程式代碼的時候(PHP 3.0引擎的工作方式是編譯一行執行一行,但是到了PHP 4.0以後就有所改變了,PHP 4.0是先把整個程式代碼全部編譯完成後,再将這些編譯好的程式代碼一次執行完畢,在編譯的過程中不會執行任何程式代碼)。</code><code>require</code><code>()通常來導入靜态的内容,而</code><code>include</code><code>()則适合用導入動态的程式代碼。 </code>

<code>5. 如同</code><code>include_once</code><code>(),</code><code>require_once</code><code>()會先檢查目标檔案的内容是不是在之前就已經導入過了,如果是的話,便不會再次重複導入同樣的内容。 </code>

<code>5. </code><code>require</code><code>是無條件包含也就是如果一個流程裡加入</code><code>require</code><code>,無論條件成立與否都會先執行</code><code>require</code><code>。 </code>

<code>7. </code><code>require</code><code>通常放在PHP程式的最前面,PHP程式在執行前,就會先讀入</code><code>require</code><code>所指定引入的檔案,使它變成PHP程式網頁的一部份。常用的函數,亦可以這個方法将它引入網頁中。 </code>

<code>8. </code><code>include</code><code>一般是放在流程控制的處理部分中PHP程式網頁在讀到</code><code>include</code><code>的檔案時,才将它讀進來。 這種方式可以把程式執 行時 的流程簡單化。</code>

<code>本文轉自 IT阿飛 51CTO部落格,原文連結:http://blog.51cto.com/itafei/1867570</code>