使用类名称类似的别名

时间:2014-04-02 09:02:50

标签: php class namespaces alias

在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添加定义时,我收到一条错误消息,指出另一个名称已被使用(因为它是别名)。

1 个答案:

答案 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;

给出的示例是说明命名空间解析,并方便地忽略可能出现的其他细节和冲突。