PHP中的相对嵌套命名空间

时间:2012-11-17 21:42:21

标签: php namespaces

我会尝试描述我遇到问题的情况:

我有一个主文件夹。我将所有文件保存在那里(出于某种原因的空类),以及一个包含相同文件的子文件夹,其中包含所有实现(空类扩展它们)。

主文件夹的命名空间声明为Project/Folder,子文件夹声明为Project/Folder/Subfolder。这些是类的声明:

namespace Project\Folder;
class Foo extends Subfolder\Foo {  }

namespace Project\Folder\Subfolder;
class Foo {  }

我想要实现的是能够通过较低级别的这些空类从Project\Folder\Subfolder\Foo内部调用其他类,只有它的名称,例如:

namespace Project\Folder\Subfolder;
class Foo {
     function bar() {
        Another_Class::do_something();
     }
}

默认情况下,Another_Class命名空间会调用Project\Folder\Subfolder。我希望这个从Project \ Folder命名空间引用具有相同语法的Another_Class - 这可能吗?

我希望我能够清楚地解释这一点,如果没有,请写一个表扬,我会尽力让它更清楚。

1 个答案:

答案 0 :(得分:2)

您可以使用use语句实现此目的。

use Project\Folder\Subfolder\Another_Class as SomeAlias;

// ...

SomeAlias::doSomething();

// or

$object = new SomeAlias();
$object->doSomething();

或者,您必须引用整个命名空间:

\Project\Folder\Subfolder\Another_Class::doSomething();

// or

$object = new \Project\Folder\Subfolder\Another_Class();
$object->doSomething();

More information here.