在 PHP 開發中,include、include_once、require、require_once 是文件包含的四大核心語句。掌握它們的異同,對於構建清晰的模組化架構、避免重複定義錯誤、控制錯誤處理流程至關重要。
include_path 影響。| 語句 | 典型使用位置 | 文件不存在/出錯行為 | 返回值 | 重複包含同一文件 |
|---|---|---|---|---|
include |
流程控制中(if、循環、函數內) | 發出 Warning,腳本 繼續執行 | 有(包含成功返回 1,可在被包含文件用 return 返回值) |
每次執行都會重複導入 |
include_once |
流程控制中 | 發出 Warning,腳本 繼續執行 | 有 | 僅導入一次(同一請求生命周期內) |
require |
腳本最前端、框架核心引導文件 | 拋出 Fatal Error,腳本 立即終止 | 無(終止執行) | 每次執行都會重複導入 |
require_once |
腳本最前端、類庫/配置文件引入 | 拋出 Fatal Error,腳本 立即終止 | 無 | 僅導入一次 |
_once 後綴會維護一個「已包含文件路徑集合」(正規化後的絕對路徑),再次遇到同路徑直接跳過。require_once。require_once 或 include_once(視嚴重程度)。include / include_once。require_once __DIR__ . '/../config/app.php'; 避免路徑解析歧義。require/include,交給 Composer 管理。require_once 比 require 慢很多 → 實際差異微乎其微,安全性收益遠大於成本。include 包含同一文件 → 每次迭代都會重複執行文件代碼,應移出循環或改用 include_once。return 返回值,但在 require 失敗時無法捕獲 → 需要返回值時優先用 include 系。理解這四者的設計初衷與行為差異,能幫助你寫出更健壯、可維護的 PHP 應用架構。