啥是命名空間?
還是講一個班級點(diǎn)名的例子吧。我們上了大學(xué),來自五湖四海的朋友來到同一所學(xué)校,同一個班級,同一個宿舍!緣分就是這么的奇妙,有兩個同學(xué),都叫“李四”,只是來自不同的地方,一個來自A地,一個來自B地,新學(xué)期,老師讓他們都做自我介紹??聪旅胬樱?/p>
<?php
namespace A{
function introduce(){
echo "我是來自A地的 ".NAME.PHP_EOL;
}
}
namespace B{
function introduce(){
echo "我是來自B地的 ".NAME.PHP_EOL;
echo "我是在B命名空間開始調(diào)用的----".PHP_EOL;
CEsubspace();
echo "我是在B命名空間開始調(diào)用的+++".PHP_EOL;
};
}
namespace BCE{
function subspace(){
echo "我是最內(nèi)層命名空間".PHP_EOL;
}
}
namespace {
const NAME = "李四";
Aintroduce();
Bintroduce();
BCEsubspace();
use BCE as BCE;
BCEsubspace();
}
?>
以上會輸出以下內(nèi)容:
我是來自A地的 李四
我是來自B地的 李四
我是在B命名空間開始調(diào)用的----
我是最內(nèi)層命名空間
我是在B命名空間開始調(diào)用的+++
我是最內(nèi)層命名空間
我是最內(nèi)層命名空間
注:命名空間中只能包含:接口,類,函數(shù)和常量,不能包含變量;const也是用來定義一個常量(同之前講到的define);namespace A{}表示定義了命名空間A,大括號里的內(nèi)容都屬于A,要訪問A命名空間里的函數(shù),可以使用:A函數(shù)名稱();最后那個namespace沒有命名空間,相當(dāng)于一個全局命名空間;use BCE as BCE 表示使用BCE來表示BCE的命名空間,當(dāng)命名空間名稱比較長時,可以使用此方式來縮短每次調(diào)用時需要寫大量名稱的問題。CEsubspace(),這里為啥沒有寫之前的B?因?yàn)檫@里前面沒有加,表示是依據(jù)當(dāng)前命名空間B開始的。