首頁 後端開發 php教程 淺析PHP使用include和require時的區別

淺析PHP使用include和require時的區別

Jul 18, 2018 am 10:42 AM

 這篇文章要跟大家分享的內容是PHP中檔案函數include和require的差別,有需要的朋友可以參考一下。

例如下面的程式碼:

include('hello.php');
echo 'include test final!';//include报错,但是会继续执行,显示:include test final!
require('hello.php');
echo 'require test final!';//require报错,停止代码的执行。
登入後複製

一句話總結:
1.include() 產生警告
2.require()  則導致一個致命錯誤

換句話說,如果你想在遺失檔案時停止處理頁面,那就別猶豫了,用  require()  吧。 include()  就不是這樣,腳本會繼續運作。同時也要確認設定了合適的include_path。
就是說再解析程式時即讀取require的文件,而不是解析後,如果不能讀取到被require的文件,就不能進行下一步動作。所以,不被正確包含就會導致程式的文件,用require比較好。可能效率上也略微高點。

注意:require() 無論如何都會包含文件,而include() 可以選擇性地包含:

<?php
 if(FALSE){
   require(&#39;x.php&#39;);
 }
 if(FALSE){
   include(&#39;s.php&#39;);
 }
?>
登入後複製

上面的程式碼中:x.php  一定會被包含,而  s. php  一定不會被包含。

二種方式提供不同的使用彈性:
require 的使用方法如 require("MyRequireFile.php"); 。這個函式通常放在 PHP 程式的最前面,PHP 程式在執行前,就會先讀入 require 所指定引進的檔案,讓它變成 PHP 程式網頁的一部份。
include 使用方法如 include("MyIncludeFile.php"); 。這個函數一般是放在流程控制的處理區段。 PHP 程式網頁在讀到 include 的檔案時,才將它讀進來。這種方式,可以把程式執行時的流程簡單化。
一、使用語法和簡介

1、include()
語法:include(/path/to/filename)
include ()語句將在其被呼叫的位置處包含一個檔案。包含一個文件與在該語句所在位置複製制定文件的資料具有相同內容的效果。
使用include()時可以忽略括號。

可以根據條件來執行include()語句。在條件語句中使用include()有個怪現象,它必須包圍在語句區塊大括號中,或用其他語句包圍符括起來。

2、include_once()
語法:include_once(filename)

include_once() 語句在腳本執行期間包含並執行指定檔案。此行為和 include() 語句類似,唯一區別是include_once()會先判斷一下這個檔案在之前是否已經被包含過,如已經包含,則忽略本次包含。
include_once() 應該用於嵌套包含的情況下,想確保它只被包含一次以避免函數重定義,變數重新賦值等問題。

小結:include_once()函數的作用與include相同,不過它會先驗證是否已經包含了該檔案。如果已經包含,則不再執行include_once。否則,則必須包含該文件。除了這一點與include完全相同。

3、require()
語法:require(filename)
require()很大程度與include相同,都是將一個模板檔包含到require呼叫坐在的位置。
require和include之間有兩點重要的區別。首先,無論require的位置如何,制定文件都會包含到出現require的腳本中。例如,即使require放在計算結果為假的if語句中,仍會包含指定檔。
第二個重要的區別是:require出錯時,腳本將停止運行,而在使用include的情況下,腳本將繼續執行。

4、require_once()
語法:require_once(filename)
require_once() 語句在腳本執行期間包含並執行指定檔。此行為和 require() 語句類似,唯一差異是require_once()會先判斷這個檔案在之前是否已經被包含過,如已經包含,則忽略本次包含。
require_once() 應該用於巢狀包含的情況下,想確保它只被包含一次以避免函數重定義,變數重新賦值等問題。

小結:隨著網站越來越大,可能會出現重複包含某些檔案。這也許不是問題,但又是修改了所包含檔案的變數後,卻因為後面再次包含原來的檔案而被覆蓋,可能不希望出現這種情況。也可能出現另一個問題,即所包含檔案中函數名稱的衝突。使用require_once就可以解決這些問題。
require_once函數確保檔案只包含一次。在遇到require_once後,後面再試圖包含相同的檔案時將被忽略。

二、區別總結

1、include()與require()語句區別。
兩者差異:這兩種結構除了在如何處理失敗之外完全一樣。
include() 產生一個警告,腳本會繼續運作。
require() 則導致一個致命錯誤,腳本會停止執行。

換句話說,如果想在遇到遺失檔案或遇到錯誤時停止處理頁面就用 require()。如果想在遇到錯誤時繼續處理頁面就用 include()。
注意在 PHP 4.3.5 之前,包含檔案中的語法錯誤不會導致程式停止,但從此版本之後會。

2、include_once()、require_once()與include()、require()的差異
include_once()和require_once()一樣,應該用於在腳本執行期間同一個檔案有可能被包含超過一次的情況下,想確保它只被包含一次以避免函數重定義,變數重新賦值等問題。這就是include_once()和require_once()與include() 和require()的主要差異。

三、需要注意的問題

1.路徑問題
特別是嵌套包含的時候,一定要注意包含文件的路徑。
例如 A文件包含了B文件,B文件包含了C文件,A,B,C文件都不在同一個資料夾下,這個時候往往很容易出錯。
解決方案:可以使用 dirname(__FILE__) 語句,這句話的意思是取得目前腳本的絕對路徑。如:require_once(dirname(__FILE__).'/config.php');

#2.效率問題
include_once(),require_once(),與include(),require ()比較,效率要低一些,因為他們至少得先判斷一下這個文件是否已包含。這問題在PHP5版有很大改進,不過效率還是有差異。

相關推薦:

php中include_once,require_once,和include,require的使用情境和差異。

PHP中include和require的區別,phpincluderequire

以上是淺析PHP使用include和require時的區別的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

在PHP API中說明JSON Web令牌(JWT)及其用例。 在PHP API中說明JSON Web令牌(JWT)及其用例。 Apr 05, 2025 am 12:04 AM

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

解釋PHP中晚期靜態結合的概念。 解釋PHP中晚期靜態結合的概念。 Mar 21, 2025 pm 01:33 PM

文章討論了PHP 5.3中介紹的PHP中的晚期靜態結合(LSB),允許靜態方法的運行時間分辨率調用以更靈活的繼承。 LSB的實用應用和潛在的觸摸

描述紮實的原則及其如何應用於PHP的開發。 描述紮實的原則及其如何應用於PHP的開發。 Apr 03, 2025 am 12:04 AM

SOLID原則在PHP開發中的應用包括:1.單一職責原則(SRP):每個類只負責一個功能。 2.開閉原則(OCP):通過擴展而非修改實現變化。 3.里氏替換原則(LSP):子類可替換基類而不影響程序正確性。 4.接口隔離原則(ISP):使用細粒度接口避免依賴不使用的方法。 5.依賴倒置原則(DIP):高低層次模塊都依賴於抽象,通過依賴注入實現。

框架安全功能:防止漏洞。 框架安全功能:防止漏洞。 Mar 28, 2025 pm 05:11 PM

文章討論了框架中的基本安全功能,以防止漏洞,包括輸入驗證,身份驗證和常規更新。

自定義/擴展框架:如何添加自定義功能。 自定義/擴展框架:如何添加自定義功能。 Mar 28, 2025 pm 05:12 PM

本文討論了將自定義功能添加到框架上,專注於理解體系結構,識別擴展點以及集成和調試的最佳實踐。

如何在系統重啟後自動設置unixsocket的權限? 如何在系統重啟後自動設置unixsocket的權限? Mar 31, 2025 pm 11:54 PM

如何在系統重啟後自動設置unixsocket的權限每次系統重啟後,我們都需要執行以下命令來修改unixsocket的權限:sudo...

如何用PHP的cURL庫發送包含JSON數據的POST請求? 如何用PHP的cURL庫發送包含JSON數據的POST請求? Apr 01, 2025 pm 03:12 PM

使用PHP的cURL庫發送JSON數據在PHP開發中,經常需要與外部API進行交互,其中一種常見的方式是使用cURL庫發送POST�...

See all articles