首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 中 include() 與 require() 差異深度解析

     編輯:PHP 綜合知識

include() 與 require():效能、行為與適用場景完整比較

在 PHP 開發中,include() 與 require() 是最常用的檔案引入敘述,雖然兩者都能將指定檔案內容插入腳本,但底層機制、錯誤處理、回傳值與適用情境有顯著差異。本文整理六大關鍵差異,協助開發者依需求選擇最適當的方式。

1. 執行機制與效能

  • require():在編譯階段即將目標檔案內容「取代」原敘述位置,故只處理一次。若在迴圈中呼叫,不會重複讀取檔案,效能較佳。
  • include():在執行階段才讀取並評估檔案,每次呼叫都會重新載入。適合動態決定檔案名稱(如迴圈引入不同檔案)的情境。

2. 錯誤處理行為

  • require():找不到檔案或發生致命錯誤時,拋出 E_COMPILE_ERROR 並立即終止腳本執行。
  • include():同樣情況下僅產生 E_WARNING,腳本繼續往下執行。

3. 回傳值

  • include():有回傳值。若被引入檔案執行 return,呼叫端可接收該值;若無 return 則回傳 1(成功)或 false(失敗)。
  • require():無回傳值(歷史原因),故無法透過回傳值判斷引入是否成功。

4. 迴圈與動態檔案名

需在迴圈中依變數引入不同檔案時,只能使用 include()。require() 在編譯期已完成替換,無法配合執行期變數。

5. 實務範例:include() 回傳值應用

<?php
// ok.php
echo "ok!";
return true;
?>

<?php
$login = include('ok.php');
if ($login) {
    echo "檔案引入成功";
} else {
    echo "檔案引入失敗";
}
// 輸出:ok!檔案引入成功
?>

6. 實務範例:引入陣列設定檔

<?php
// config.php
return [
    'ILOVEYOU' => 1,
    2, 3, 4
];
?>

<?php
$config = include 'config.php';
$config = array_change_key_case($config);
print_r($config);
// 輸出:Array ( [iloveyou] => 1 [0] => 2 [1] => 3 [2] => 4 )
?>

7. 慣用放置位置

  • require():通常置於腳本最前端,載入核心函式庫、設定檔等「必須存在」的資源。
  • include():常用於流程控制區塊(如 if、switch、迴圈),依條件動態載入模組、樣板等。

總結建議

情境建議使用理由
核心類別、函式庫、必要設定檔require()缺失即嚴重錯誤,編譯期替換效能佳
選用性模組、樣板、迴圈動態引入include()支援變數檔名、錯誤不中斷、有回傳值
需判斷引入是否成功include()可接收回傳值或檢查布林結果

理解兩者差異,能撰寫更健壯、效能更佳的 PHP 程式碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved