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

PHP 腳本十大技巧(三):善用 include 與 require 實現程式碼重用

     編輯:PHP 綜合知識

為什麼需要程式碼重用?

當專案規模增長,網頁數量達到數百甚至上千時,重複的程式碼區塊(如頁首、頁尾、版權宣告、資料庫連線設定、常用函式庫)若分散在每個檔案中,維護將成為噩夢。修改一行版權文字,可能要編輯上百個檔案。PHP 提供了四個核心函式來解決這個問題:include()、include_once()、require()、require_once()。

四大函式詳細比較

函式執行階段失敗處理重複引入檢查典型適用場景
include() 執行期 發出 Warning,腳本繼續執行 否 動態內容、條件式引入、模板片段
include_once() 執行期 發出 Warning,腳本繼續執行 是 函式庫、類別定義、防止重複宣告錯誤
require() 編譯期 發出 Fatal Error,腳本立即終止 否 核心設定檔、關鍵依賴、靜態版面結構
require_once() 編譯期 發出 Fatal Error,腳本立即終止 是 核心函式庫、類別檔案、確保只載入一次

實務應用範例

場景 A:靜態版權區塊 —— 使用 require()

版權資訊不含變數,屬於靜態內容,且若遺失會嚴重影響頁面完整性,適合用 require() 在編譯階段直接插入。

<!DOCTYPE html>
<html>
<head><title>我的網站</title></head>
<body>
    <main>...頁面主要內容...</main>
    <footer>
        <?php require __DIR__ . '/includes/copyright.php'; ?>
    </footer>
</body>
</html>

場景 B:載入函式庫/類別 —— 使用 require_once()

確保核心工具類別在整個請求生命週期中只被載入一次,避免「Cannot redeclare class」錯誤。

<?php
require_once __DIR__ . '/lib/Database.php';
require_once __DIR__ . '/lib/Util.php';

$db = new Database();
$util = new Util();
// ... 後續業務邏輯
?>

場景 C:條件式引入不同模板 —— 使用 include()

根據條件動態決定載入哪個模板檔案,執行期才解析,彈性最高。

<?php
$template = $_GET['view'] ?? 'default';
$allowed = ['default', 'mobile', 'amp'];
if (in_array($template, $allowed)) {
    include "templates/{$template}.php";
} else {
    include "templates/404.php";
}
?>

安全性:保護敏感引入檔案

引入檔案常包含資料庫帳密、API 金鑰等機密資訊。絕對不要將這些檔案放在 Web 公開目錄下(如 public_html/、www/、htdocs/)。

最佳實踐:

  • 將 config.php、db_connect.php 等敏感檔案放在 Web 根目錄之外(例如專案根目錄的 config/ 或 includes/)。
  • 在 php.ini 設定 open_basedir 限制腳本存取路徑。
  • 或使用 .htaccess 禁止直接存取 *.inc、*.php 等副檔名的引入檔。

現代 PHP 的演進:自動載入與 Composer

早期需手寫大量 require_once。現代 PHP (PHP 5.3+ 配合 PSR-4 標準) 採用 Composer 自動載入:

// composer.json 設定自動載入規則後,僅需在入口檔引入一次:
require_once __DIR__ . '/vendor/autoload.php';

// 之後直接使用命名空間類別,無需手動 require
use App\Service\UserService;
$userService = new UserService();

這才是目前企業級專案的標準作法,徹底解決了檔案引入管理的痛點。

小結

掌握 include/require 家族的差異,能讓您撰寫出結構清晰、易於維護的 PHP 專案。記住核心原則:關鍵靜態依賴用 require,動態彈性內容用 include,類別/函式庫必加 _once,敏感檔案放公開目錄外。下一篇將介紹 GD 圖形處理技巧,敬請期待。

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