【问题标题】:Namespaces : "use as" global命名空间:“用作”全局
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-03
    • 2013-11-22
    • 2012-03-13
    相关资源
    最近更新 更多