本文是復(fù)習(xí)所寫(xiě),并不會(huì)涵蓋一些基礎(chǔ)知識(shí)點(diǎn)
定義
命名空間就相當(dāng)于操作系統(tǒng)中目錄的概念
主要是為了解決以下兩個(gè)問(wèn)題:
- 用戶(hù)編寫(xiě)的代碼與PHP內(nèi)部的類(lèi)/函數(shù)/常量或第三方類(lèi)/函數(shù)/常量之間的名字沖突
- 為很長(zhǎng)的標(biāo)識(shí)符名稱(chēng)(通常是為了緩解第一類(lèi)問(wèn)題而定義的)創(chuàng)建一個(gè)別名(或簡(jiǎn)短)的名稱(chēng)粒梦,提高源代碼的可讀性
<?php
namespace Mayi\Demo;
class Test
{
}
命名空間大小寫(xiě)不敏感,一般首字母大寫(xiě)
同一文件中可以定義多個(gè)命名空間圈纺,不推薦使用
<?php
namespace Mayi\Demo
{
class Test
{
}
}
// 全局代碼
namespace {
$a = 1;
}
namespace關(guān)鍵字與NAMESPACE魔術(shù)常量
<?php
namespace Mayi
{
class Test
{
public function foo()
{
echo __NAMESPACE__;
}
}
}
namespace Mayi\Demo
{
class Test
{
public function foo()
{
echo __NAMESPACE__;
}
}
}
function foo()
{
echo __NAMESPACE__;
}
// namespace指代當(dāng)前文件的命名空間
namespace\foo();
(new namespace\Mayi\Test)->foo();
(new namespace\Mayi\Demo\Test)->foo();
使用命名空間
<?php
namespace Demo;
use Mayi; // 導(dǎo)入
use Mayi\Demo as MayiDemo; // 導(dǎo)入并起別名