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

PHP require_once 文件不存在導致致命錯誤:與 include 差異與異常處理

     編輯:程式設計綜合問答

`require_once` / `require` 在文件不存在或解析錯誤時拋出 **E_COMPILE_ERROR**,**腳本立即終止**,後續代碼不再執行。`include_once` / `include` 只拋 **E_WARNING**,腳本**繼續執行**。

行為對比

語句文件不存在解析錯誤重複引入
`require`Fatal Error (停止)Fatal Error (停止)允許重複執行
`require_once`Fatal Error (停止)Fatal Error (停止)僅執行一次
`include`Warning (繼續)Warning (繼續)允許重複執行
`include_once`Warning (繼續)Warning (繼續)僅執行一次

最佳實踐

  • 核心依賴 (配置、自動加載、核心庫) → `require_once`,缺失即屬嚴重故障,應暴露而非靜默繼續。
  • 可選功能 (插件、主題、第三方組件) → `include_once`,配合 `file_exists` 判斷:
$plugin = __DIR__ . '/plugins/optional.php';
if (file_exists($plugin)) include_once $plugin;
else error_log("Optional plugin missing: $plugin");

現代替代:Composer 自動加載

// composer.json
"autoload": { "psr-4": { "App\\": "src/" } }
// 運行 composer dump-autoload
require_once __DIR__ . '/vendor/autoload.php'; // 單一入口,類按需加載,無需手動 require

拋棄手動 `require`,擁抱 PSR-4 + Composer,依賴關係聲明式管理,部署一致性有保障。

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