在 PHP 開發中,include() 與 require() 是最常用的檔案引入敘述,雖然兩者都能將指定檔案內容插入腳本,但底層機制、錯誤處理、回傳值與適用情境有顯著差異。本文整理六大關鍵差異,協助開發者依需求選擇最適當的方式。
E_COMPILE_ERROR 並立即終止腳本執行。E_WARNING,腳本繼續往下執行。return,呼叫端可接收該值;若無 return 則回傳 1(成功)或 false(失敗)。需在迴圈中依變數引入不同檔案時,只能使用 include()。require() 在編譯期已完成替換,無法配合執行期變數。
<?php
// ok.php
echo "ok!";
return true;
?>
<?php
$login = include('ok.php');
if ($login) {
echo "檔案引入成功";
} else {
echo "檔案引入失敗";
}
// 輸出:ok!檔案引入成功
?>
<?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 )
?>
if、switch、迴圈),依條件動態載入模組、樣板等。| 情境 | 建議使用 | 理由 |
|---|---|---|
| 核心類別、函式庫、必要設定檔 | require() | 缺失即嚴重錯誤,編譯期替換效能佳 |
| 選用性模組、樣板、迴圈動態引入 | include() | 支援變數檔名、錯誤不中斷、有回傳值 |
| 需判斷引入是否成功 | include() | 可接收回傳值或檢查布林結果 |
理解兩者差異,能撰寫更健壯、效能更佳的 PHP 程式碼。