在php.net中有一个我不明白的例子:
<?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
?>
从这里开始:http://www.php.net/manual/en/language.namespaces.importing.php
他们怎么能在这个语句$obj = new namespace\Another;
中说明它从类foo\another
实例化一个对象?当我尝试向类Another
添加定义时,我收到一条错误消息,指出另一个名称已被使用(因为它是别名)。
答案 0 :(得分:0)
如果在没有此类别名的另一个文件中定义foo\Another
类,则此方法有效。
another.php
<?php
namespace foo;
class Another { }
test.php的
<?php
namespace foo;
use My\Full\Classname as Another;
require_once 'another.php';
new namespace\Another;
给出的示例是说明命名空间解析,并方便地忽略可能出现的其他细节和冲突。