2012-06-25 59 views
0
<?php 
namespace foo; 
use My\Full\Classname as Another; 

// this is the same as use My\Full\NSname as NSname 
use My\Full\NSname; 

// importing a global class 
use ArrayObject; 

$obj = new namespace\Another; // instantiates object of class foo\Another 
$obj = new Another; // instantiates object of class My\Full\Classname 
NSname\subns\func(); // calls function My\Full\NSname\subns\func 
$a = new ArrayObject(array(1)); // instantiates object of class ArrayObject 
// without the "use ArrayObject" we would instantiate an object of class foo\ArrayObject 
?> 

請幫我這個。在php中的命名空間

什麼是use My\Full\Classname as Another;

+0

它只是說使用一個叫做'Another'從命名空間'類foo'完蛋了。 – uday

回答

1

意思那是一個別名。每次你指Another的(相對)命名空間,或類名時,它就會被解析到\My\Full\Classname

$x = new Another; 
echo get_class($x); // "\My\Full\Classname" 
$y = new Another\Something; 
echo get_class($y); // "\My\Full\Classname\Something" 

標識符開頭的命名空間分隔符\是完全合格的名稱。如果缺失標識符,將針對當前名稱空間和use(按此順序)定義的別名定義(usenamespace中的標識符除外:它們總是全限定)來解析標識符。

PHP-Manual: Namespaces

+0

so .. \ My \ Full是命名空間,Classname是該命名空間中的類? –

+0

這取決於:)'使用My \ Full \ Classname作爲另一個'只是更多的一種前綴別名。如果你在這兩種情況下輸入'new Another;'或'new Another \ Something \ Different',它將用你定義的前綴替換(字面意義上的)Another'(導致'\ My \ Full \ Classname'或' \我的\全\類名\東西\ Different')。 – KingCrunch

+0

但如果'使用My \ Full \ Classname作爲另一個'中的Classname'不是一個類,那麼我們如何創建另一個對象('new Another;') –