PHP名稱空間匯入、別名
阿新 • • 發佈:2018-11-04
魔術常量__NAMESPACE__返回當前名稱空間的名稱,如果是在全域性範圍中則返回空字串。關鍵字namespace除了可以定義名稱空間,還可以用來訪問當前名稱空間或子名稱空間中的元素。
為了編碼方便,PHP允許使用use關鍵字匯入外部的完全限定名稱,並可選擇使用as關鍵字為其建立別名。PHP5.3起,可以匯入類、介面或名稱空間並建立別名,PHP5.6起,增加了對函式和常量的匯入和別名的建立。
use語句中的名稱空間總是按完全限定名來解析的。為了簡化操作,同種類別的匯入,可以用一個use關鍵字後面可以跟多個語句,語句之間用逗號分隔。不能對全域性名稱空間設定別名。
同一個檔案的同一名稱空間中,匯入的類、函式與常量的別名不能與當前名稱空間中存在。
<?php
namespace a\b {
//a.php
class A{
function __construct(){
echo "A in ".__NAMESPACE__;
}
}
class B{
function __construct(){
echo "B in ".__NAMESPACE__;
}
}
function foo(){
echo "foo in ".__NAMESPACE__;
}
}
?>
<?php namespace a\c { //b.php class B{ function __construct(){ echo "B in ".__NAMESPACE__; } } function f(){ echo "foo in ".__NAMESPACE__; } } ?>
<?php namespace a\c{ //c.php include 'a.php'; include 'b.php'; use a\b\A as B,a\b\B as C; use function a\b\foo as f; f();//呼叫的是a\b\foo namespace\f();//呼叫的是a\c\f var_dump(new B());//建立的是a\b\A的物件 var_dump(new namespace\B());//建立的是a\c\B的物件 var_dump(new C());//建立的是a\b\B的物件 } ?>