1

我命名了一个类以利用别名为一些长类名提供简写:

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 在全局命名空间中仍然不可用(找不到类“MyClass”)。我不太明白为什么。

4

1 回答 1

3

把它放在你的全局命名空间中:

use \some_namespace\MyClass as MyClass;

我相信它应该工作。

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

class_alias('\some_namespace\MyClass', 'MyClass');
于 2012-12-23T03:36:58.583 回答