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