namespace 命名空間

2021-06-22 10:02:01 字數 1580 閱讀 4604

在討論如何使用命名空間之前,必須了解 php 是如何知道要使用哪乙個命名空間中的元素的。可以將 php 命名空間與檔案系統作乙個簡單的模擬。在檔案系統中訪問乙個檔案有三種方式:

相對檔名形式如foo.txt。它會被解析為 currentdirectory/foo.txt,其中 currentdirectory 表示當前目錄。因此如果當前目錄是 /home/foo,則該檔名被解析為/home/foo/foo.txt。

相對路徑名形式如subdirectory/foo.txt。它會被解析為 currentdirectory/subdirectory/foo.txt。

絕對路徑名形式如/main/foo.txt。它會被解析為/main/foo.txt。

php 命名空間中的元素使用同樣的原理。例如,類名可以通過三種方式引用:

非限定名稱,或不包含字首的類名稱,例如 $a=new foo(); 或 foo::staticmethod();。如果當前命名空間是 currentnamespace,foo 將被解析為 currentnamespace\foo。如果使用 foo 的**是全域性的,不包含在任何命名空間中的**,則 foo 會被解析為foo。

警告:如果命名空間中的函式或常量未定義,則該非限定的函式名稱或常量名稱會被解析為全域性函式名稱或常量名稱。詳情參見 使用命名空間:後備全域性函式名稱/常量名稱。

限定名稱,或包含字首的名稱,例如 $a = new subnamespace\foo(); 或 subnamespace\foo::staticmethod();。如果當前的命名空間是 currentnamespace,則 foo 會被解析為 currentnamespace\subnamespace\foo。如果使用 foo 的**是全域性的,不包含在任何命名空間中的**,foo 會被解析為subnamespace\foo。

完全限定名稱,或包含了全域性字首操作符的名稱,例如, $a = new \currentnamespace\foo(); 或 \currentnamespace\foo::staticmethod();。在這種情況下,foo 總是被解析為**中的文字名(literal name)currentnamespace\foo。

命名空間  就是一種區分方式,如:兩個人,他倆性別都為男,但是長相差異很大,如何區分他倆?這時就用到了命名空間

第乙個男性為張三,第二個男性為李四

這就是命名 

php中的namespace命名相同。如兩個類(方法、函式)名稱相同,但裡面內容不同,這樣的類(方法、函式)檔案定義時,在檔案

<?php

namespace  北京/朝陽區/張三

/*使用 use 語句來匯入乙個命名空間*/

class one {}

function one {}

?>

<?php

namespace  北京/昌平區/張三

/*使用 use 語句來匯入乙個命名空間*/

class two {}

function two{}

?>

/*調取這兩個類(方法、函式)的時候*/

<?php

$a = new 北京/朝陽區/張三;

?>

使用 use 語句來匯入乙個命名空間

Namespace 命名空間

namespace 命名空間。命名空間是用來解決不同的類和函式擁有相同的名稱的問題。解決了命名衝突的問題。namespace gxg namespace gaoxiaoguang 使用方法 gxg a gxga gaoxiaoguang a gaoxiaoguanga gxg bfunction g...

命名空間namespace

對using namespace std 的解釋 所謂namespace,是指識別符號的各種可見範圍。c 標準程式庫中的所有識別符號都被定義於乙個名為std的namespace中。由於namespace的概念,使用c 標準程式庫的任何識別符號時,可以有三種選擇 1 直接指定識別符號。例如std os...

命名空間namespace

關鍵字 namespace 就是劃片取名字的意思 為了區分不同程式庫裡面的變數。程式設計實現命名空間的使用 include include using namespace std namespace a 定義命名空間a namespace b 定義命名空間b void fun2 using name...