PHP命名空間

2021-10-23 04:20:39 字數 4386 閱讀 1498

命名空間的引入

呼叫類沒有指定名稱, 那麼就會使用當前檔案的命名空間

相對路徑

// user.php

namespace

;class

user

}

// index.php

namespace

;use

;include

;class

test

}test:

:show()

;//user::show();

controller\user::

show()

;user:

:show()

;

絕對路徑

// article.php

namespace

article

;class

article

}

// index.php

namespace

;use

article\article

;include

;class

test

}//test::show();

\article\article::

show()

;// article\article::show

echo"";

// 第二種寫法, use article\article;

article:

:show()

;// article\article::show

函式和常量在命名空間的特殊性

函式

預設情況下, 現在當前命名空間下查詢是否有這個函式, 如果有就使用就近原則, 如果沒有就在全域性裡面查詢

如果函式檔案有命名空間, 則呼叫函式需要加上命名空間

// ********************==第一種函式檔案沒有命名空間***********************************==

// helper.php

function

helper()

// index.php

namespace

;include

"helper.php"

;// 預設情況下, 現在當前命名空間下查詢是否有這個函式, 如果有就就近原則

// 如果沒有就在全域性裡面查詢

helper()

;

// ********************==第二種函式檔案有命名空間***********************************==

// helper.php

namespace

helper

;function

helper()

// index.php

namespace

;include

"helper.php"

;\helper\helper()

;

常量

預設情況下, 現在當前命名空間下查詢是否有這個常量, 如果有就使用就近原則, 如果沒有就在全域性裡面查詢

使用define定義常量, 不受命名空間的限制

使用const定義常量, 受命名空間的限制

// *************************====define***********************************====

// helper.php

namespace

helper

;define

("name"

,"chenjiang");

// index.php

namespace

;include

"helper.php"

;echo

name

;// chenjiang

// *************************====const***********************************====

// helper.php

namespace

helper

;const

name

="chenjiang"

;// index.php

namespace

;include

"helper.php"

;echo

name

;// warning: use of undefined constant name - assumed 'name'

echo \helper\name

;// chenjiang

引入衝突解決

使用as取別名

namespace

;class

user

}namespace

;class

user

}// index.php

namespace

;use

;use

as serveruser;

include

;include

;user:

:show()

;echo"";

// 第一種寫法::

show()

;echo"";

serveruser:

:show()

;自動載入

一般的自動載入是按照命名空間來匯入相應的目錄, 資料夾的命名大小寫注意

目的: 使用某乙個類, 那麼類檔案就會自動載入進來

使用函式方式

// boostrap.php

// ********************=使用函式的方式自動載入*************************=

spl_autoload_register

(function

($class))

;// index.php

namespace

;include

"bootstrap.php"

;use

;use

as serveruser;

user:

:show()

;echo"";

serveruser:

:show()

;

使用物件導向方式

// ********************=使用物件導向的方式自動載入*************************=

class

bootstrap

public

function

autoload

($class)}

bootstrap:

:boot()

;

使用composer方式

cd 到專案目錄

composer init

修改composer.json檔案

composer install

如果後續又修改了composer.json檔案, 那麼就需要執行以下composer update 方法

// cd 到專案目錄

// composer init

// 修改 composer.json檔案, 新增自動載入選項],

"autoload":}

,"require":}

// composer install 就會生成 vender資料夾

// 如果後面修改了 composer.json 檔案, 那麼就要執行以下composer update命令, 這樣才能生效

// helper.php

function

show()

// index.php

namespace

;include

'vendor/autoload.php'

;// 引入自動載入檔案

use;

useas serveruser;

user:

:show()

;echo"";

serveruser:

:show()

;show()

;

參考文件:

php 命名空間,PHP使用命名空間

介紹 命名空間中的類,函式或常量可以通過以下方式使用 在當前命名空間中使用類 指定相對於當前命名空間的命名空間 提供命名空間的全限定名稱 從當前命名空間 在此示例中,從test1.php載入了命名空間。沒有命名空間引用的函式或類名稱將訪問當前命名空間中的功能或類名稱 示例 test1.php nam...

php命名空間

namespace misszhou function var dump a 1 var dump var dump 1 表示呼叫全域性 解決常量的衝突問題 有點像子目錄的概念 namespace meizi 必須放第一行 include func.inc.php function one func...

php 命名空間

使用命名空間 別名 匯入,允許通過別名引用或匯入外部的完全限定名稱,是命名空間的乙個重要特徵。這有點類似於在類 unix 檔案系統中可以建立對其它的檔案或目錄的符號連線。所有支援命名空間的php版本支援三種別名或匯入方式 為類名稱使用別名 為介面使用別名或為命名空間名稱使用別名。php 5.6開始允...