php - 从命名空间导出类

标签 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')。我不太明白为什么。

最佳答案

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

use \some_namespace\MyClass as MyClass;

我相信它应该有效。

编辑:它没有。这应该有效:
class_alias('\some_namespace\MyClass', 'MyClass');

关于php - 从命名空间导出类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14008395/

相关文章:

javascript - if 条件在 ng-repeat 变量上

javascript - 是否可以在不刷新整个页面的情况下加载页面内容

ruby - 类中的命名空间方法

C++ 命名空间和模板

php - 在另一个类方法中创建类对象给出 fatal error

php - 有什么原因导致这个 cron 作业无法正常工作吗

php - 当我在内部使用 _GET 时,MySql 数据库查询不起作用

javascript - SQLSTATE[01000] : Warning: 1265 Data truncated for column 'id_paket' at row 1

c++ - 使用命名空间会导致名称隐藏吗?

php - PHP中如何从具有不同命名空间的扩展类调用方法