从命名空间导出类

时间:2012-12-23 03:33:01

标签: php namespaces

我将一个类命名为使用别名来为一些长类名提供缩写:

namespace some_namespace;
use \VeryLongClassnameWhichIUseOften as Short;

class MyClass {
  public static method do_stuff() {

    Short::do_something(Short::do_other_stuff());

  }
}

现在有一些第三方代码在全局命名空间中需要MyClass

我可以以某种方式将MyClass导出到全局命名空间吗?

我试过

class \MyClass {
  ...
}

但显然不允许(意外的T_NS_SEPARATOR,期待T_STRING)。

我也试过这个:

namespace some_namespace {
  use \VeryLongClassnameWhichIUseOften as Short;

  class MyClass {
    ...
  }
}

namespace {
  use \some_namespace\MyClass as MyClass;
}

不会抛出任何其他错误,但MyClass仍然无法在全局命名空间中使用(未找到Class'MyClass')。我不太明白为什么。

1 个答案:

答案 0 :(得分:3)

将它放在全局命名空间中:

use \some_namespace\MyClass as MyClass;

我相信它应该有用。

编辑:它没有。这应该有效:

class_alias('\some_namespace\MyClass', 'MyClass');