命名空间: "use as" 全局

4
我有一个名为“init.php”的文件,其中我使用命名空间包含了所有的类。其中一个例子是:MyClass\Helper。
在这个init文件中,还包含另一个文件(b.php),该文件使用了MyClass\Helper。
最后,这个"init"文件被索引所需要,索引也使用了MyClass\Helper。
因此:
init.php
  -> Require libs/Helper.php ( final namespace: MyClass\Helper )
  -> Require b.php
       -> Use MyClass\Helper

index.php
  -> Require init.php
  -> Use MyClass\Helper

现在我想在我的init.php中添加use MyClass\Helper as Helper,但它不起作用(如果我使用“Helper”而不是“MyClass\Helper”,则在其他文件中找不到类),我必须手动将其放入b.php(在类之后包含)和index.php中。
有没有一种方法可以为所有文件“保存”“use as”?

1
根据PHP手册http://php.net/manual/en/language.namespaces.importing.php,仅使用命名空间功能(特别是关键字“use”)似乎不可能。导入规则是基于文件的,这意味着包含的文件不会继承父文件的导入规则。 - Maxime Pacary
1
您可能会对这个答案感兴趣:http://stackoverflow.com/a/19890311/488666 - Maxime Pacary
Frosty Z,你的评论是正确的。请考虑重新回答一下,这样每个人都可以点赞。在PHP和许多其他语言中,命名空间是按文件处理的。 - Dave Ross
Frosty Z谢谢,但是创建另一个类来掩盖真实的类,“使用命名空间来避免同名类的问题”的逻辑不再有意义,或者我错了?也许“use as”也是一样的,我不知道啊哈哈。顺便说一下,谢谢,如果你创建一个可以标记为正确答案的回答,我会检查的。 - Theraloss
1个回答

0
整个想法就是尽量不包含任何内容。尝试使用spl_autoload_register注册你的类自动加载器,这样你就不需要使用“include”和“require”了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接