我将一个类命名为使用别名来为一些长类名提供缩写:
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')。我不太明白为什么。
答案 0 :(得分:3)
将它放在全局命名空间中:
use \some_namespace\MyClass as MyClass;
我相信它应该有用。
编辑:它没有。这应该有效:
class_alias('\some_namespace\MyClass', 'MyClass');