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

PHP 命名空間實戰:定義、引用、別名與跨空間呼叫

     編輯:PHP 綜合知識

基本語法

<?php
// 定義命名空間(必須是檔案第一行非註解代碼)
namespace Bak\Ba\Ba;

function bab() {
    echo 'bi';
}

// 另一個命名空間
namespace Kkk;

function k1() {
    echo 'k1';
}

// 在 Kkk 空間下呼叫 Bak\Ba\Ba\bab()
\Bak\Ba\Ba\bab(); // 前導 \ 表示全域空間起始

// 使用別名
use \Bak\Ba\Ba as B; // 前導 \ 可省略
B\bab();             // 透過別名呼叫,前面不加 \

// 當前空間函式正常呼叫
k1();

關鍵規則

場景寫法說明
定義`namespace A\B;`檔案開頭,同檔可多段定義
非限定名`foo()`解析為 `當前空間\foo`
限定名`A\foo()`解析為 `當前空間\A\foo`
完全限定名`\A\B\foo()`前導 `\` 從全域根解析
導入別名`use A\B as C;`編譯時別名,不影響執行時動態特性
導入函式/常數`use function A\B\func; use const A\B\CONST;`PHP 5.6+

動態呼叫陷阱


$ns = 'Bak\Ba\Ba';
$func = 'bab';
$ns . '\\' . $func(); // 錯誤:嘗試呼叫常數
call_user_func($ns . '\\' . $func); // 正確
// 或
$fqn = "\\{$ns}\\{$func}";
$fqn();

自動載入配合

遵循 PSR-4:`namespace App\Controller` 對應 `src/Controller/`,`composer dump-autoload` 即可自動載入,無需手動 `include`。

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