【发布时间】:2016-04-14 21:51:20
【问题描述】:
我有一个名为“init.php”的文件,其中包含我所有的类和一个命名空间。例如,其中之一是:MyClass\Helper。
始终在 init 中,在这些类之后,包含另一个使用 MyClass\Helper 的文件 ( b.php )。
最后,同样使用 MyClass\Helper 的索引需要这个文件“init”。
所以:
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(包含在类之后)和索引中.php。
有没有办法“保存”所有文件的“用作”?
【问题讨论】:
-
根据 PHP 手册 php.net/manual/en/language.namespaces.importing.php,仅使用命名空间功能(特别是关键字
use)听起来是不可能的 > 导入规则是基于每个文件的,这意味着包含的文件不会继承父文件的导入规则。 -
您可能对此答案感兴趣:stackoverflow.com/a/19890311/488666
-
Frosty Z,您的评论是正确的。请考虑重新将其作为答案,以便每个人都可以投票。在 PHP 和许多其他语言中,命名空间是逐个文件处理的。
-
Frosty Z 谢谢,但是创建另一个类来掩盖真实的类,“使用命名空间避免同名类的问题”的逻辑不再有意义,还是我错了?也许它与“用作”相同,idk ahah。顺便说一句,谢谢,如果您创建一个答案,我可以检查是否正确。
标签: php