命名空間本身就像目錄一樣,所以命名空間當然也是可以定義子命名空間的,真的就和操作系統的各種目錄層級是完全一樣的。我們通過簡單的例子來看看。首先還是創建三個php文件,其中3-2和3-2-1是使用的相同的二級命名空間,3-2-1在FILE32的基礎上繼續向下擴展了第三級的命名空間FILE321。他們都是MyProject命名空間的子命名空間。
// file3-1.php
namespace MyProject\FILE31;
function testA31(){
echo 'FILE31\testA()', PHP_EOL;
}
// file3-2.php
namespace MyProject\FILE32;
const CONST_A32 = "file3-2";
function testA32(){
echo 'FILE32\testA()', PHP_EOL;
}
class objectA32{
function test(){
echo 'FILE32\ObjectA', PHP_EOL;
}
}
// file3-2-1.php
namespace MyProject\FILE32\FILE321;
function testA321(){
echo 'FILE321\testA()', PHP_EOL;
}
接下來的使用就很簡單了,和使用一級命名空間一樣,直接使用use進行導入就可以了。
// 子命名空間
require 'namespace/file3-1.php';
require 'namespace/file3-2.php';
require 'namespace/file3-2-1.php';
use MyProject\FILE31;
use MyProject\FILE32;
use MyProject\FILE32\FILE321;
FILE31\testA31(); // FILE31\testA()
FILE32\testA32(); // FILE32\testA()
FILE32\FILE321\testA321(); // FILE321\testA()
FILE321\testA321(); // FILE321\testA()
PHP是允許在一個文件中定義多個命名空間的,但是并不推薦這么做,因為這樣可能會帶來各種未知的混亂。在這里,我們只要了解到可以這樣使用就行了,在日常的開發中還是盡量要避免。
// file4.php
namespace FILE41;
function testA41(){
echo 'FILE41\testA()', PHP_EOL;
}
namespace FILE42;
function testA42(){
echo 'FILE42\testA()', PHP_EOL;
}
在使用中當然也和其他命名空間的使用沒什么兩樣,直接use使用即可。
// 一個文件中多個命名空間
require 'namespace/file4.php';
use FILE41, FILE42;
FILE41\testA41(); // FILE41\testA()
FILE42\testA42(); // FILE42\testA()
不要被術語嚇到,這三個術語其實非常好理解。
直接用例子來說就非常清晰了。
// 非限定名稱、限定名稱、完全限定名稱
use MyProject\FILE32\objectA32 as obj32;
$o = new obj32(); // 非限定名稱
$o->test(); // FILE32\ObjectA
$o = new FILE32\objectA32(); // 限定名稱
$o->test(); // FILE32\ObjectA
$o = new \MyProject\FILE32\objectA32(); // 完全限定名稱
$o->test(); // FILE32\ObjectA
也是很簡單的內容吧,直接來看例子。
// file5.php
namespace FILE5;
function test(){
echo __NAMESPACE__ . ': test()', PHP_EOL;
}
// test.php
namespace Pro;
// namespace與__NAMESPACE__
require 'namespace/file5.php';
function test(){
echo __NAMESPACE__ . ': test()', PHP_EOL;
}
namespace\test(); // Pro: test()
\FILE5\test(); // FILE5: test()
到此,關于“PHP中命名空間是怎樣的存在以及非限定名稱、限定名稱、完全限定名稱的區別”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注本站網站,小編會繼續努力為大家帶來更多實用的文章!
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...
2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...
:喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...
(資料圖片)最新更新:針對暴雪與網易終止合作后游戲廠商爭取代理權一事,據媒體最新消息稱,騰訊方面回應,內部暫時沒有相關消息,暴雪版權的問題建議以暴雪官方回復為準。米哈游則表示,米哈游接手暴雪版權代理為假消息,米哈游自成立以來主打自研游戲,目前尚未有代理運營的游戲項目。11月17日,#暴雪單方宣布與網易停止合作#上熱搜,暴雪娛樂發聲明稱,由于同網易的現有授權協議將在2023年1月23日到期,將暫停在...
(資料圖片僅供參考)最近小編看到大家都在討論管寧華歆是個什么樣的人相關的事情,對此呢小編也是非常的感應興趣,那么這件事究竟是怎么發生的呢?具體又是怎么回事呢?下面就是小編搜索到的關于管寧華歆是個什么樣的人事件的相關信息,我們一起來看一下吧!1、管寧的特點——淡泊名利,性淡氣清,愛憎分明。管寧,字幼安。北??ぶ焯摽h人。與華歆、邴原并稱為"一龍"。漢末天下大亂時,與邴原及王烈等人至遼東避亂。在當地只談...
銀行u盾丟了可以補辦嗎?u盾失可以補領。以工商銀行為例子: u盾資格證書遺失后,必須由本人帶上有效的身份證和開通電子銀行的銀行卡,到地區隨意服務網點拆換u盾資格證書并進行證書下載。1、u盾報失期內,如必須申請辦理小額付款、轉賬業務,可試著通過網上銀行、手機銀行等方式開通"短消息認證支付”后絞易;2、各地區不一樣自助機器使用業務有差別,實際作用及實際操作要以機器網頁頁面展示為標...