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

PHP 檔案包含四大函數差異全解析:include、require、include_once、require_once

     編輯:PHP 相關知識

核心差異速查表

函數重複包含找不到檔案適用場景
include允許多次Warning,繼續執行模板片段、可選配置
include_once僅包含一次Warning,繼續執行函數庫、類別定義
require允許多次Fatal Error,腳本終止核心配置、必須依賴檔案
require_once僅包含一次Fatal Error,腳本終止核心類別、單例載入

行為實測代碼

1. include — 可重複包含

<?php
include 'demo1.php';
include 'demo1.php';
include 'demo1.php';
?>

輸出:demo1.php 內容連續輸出三次。

2. include_once — 只包含一次

<?php
include_once 'demo1.php';
include_once 'demo1.php';
include_once 'demo1.php';
?>

輸出:demo1.php 內容僅輸出一次。

3. require — 重複包含,缺檔即終止

<?php
require 'demo1.php';
require 'demo1.php';
require 'demo1.php';
?>

輸出:同 include,輸出三次;但若 demo1.php 不存在,直接 Fatal error 停止。

4. require_once — 核心檔案單一載入

<?php
require_once 'demo1.php';
require_once 'demo1.php';
require_once 'demo1.php';
?>

輸出:僅輸出一次;缺檔同樣拋出致命錯誤。

關鍵差異深度解析

錯誤處理機制

<?php
// include 版本
include 'not_exist.php';
echo 'this is demo13.php'; // 仍會執行,前面只有 Warning

// require 版本
require 'not_exist.php';
echo 'this is demo14.php'; // 永遠不會執行,Fatal error 直接終止
  • include:E_WARNING,腳本繼續,適合非關鍵檔案(如廣告區塊、側邊欄)。
  • require:E_COMPILE_ERROR,腳本立即停止,適合核心依賴(如資料庫設定、自動載入器)。

效能考量

  • _once 系列需維護「已包含檔案」查找表,微幅增加記憶體與 CPU 開銷;大型專案建議配合 Composer PSR-4 自動載入,完全避免手動 include/require。
  • 條件式包含時(如 if ($cond) include 'a.php';)不能使用 _once 版本,否則條件判斷失效(PHP 編譯期已登記)。

最佳實踐建議

  1. 現代專案:全面採用 Composer 自動載入,require_once 'vendor/autoload.php' 只出現在入口檔,其餘皆靠命名空間解析。
  2. 舊專案維護:核心配置用 require_once,共用函數庫用 include_once,視圖片段用 include。
  3. 錯誤等級:開發環境開啟 error_reporting(E_ALL),生產環境關閉顯示但記錄日誌,避免 Warning 洩露路徑資訊。

理解四者差異,能讓你在遺留專案重構、效能優化、錯誤處理時做出正確選擇。

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