【问题标题】:What does this PHP namespace code block mean?这个 PHP 命名空间代码块是什么意思?
【发布时间】:2013-02-15 03:05:21
【问题描述】:

我目前在代码审查期间遇到了这个命名空间代码块,我看起来像这样。我对命名空间和示例不熟悉,我在 youtube 上看到过,教程中没有类似的示例。

我只理解第一个命名空间意味着代码块将位于全局空间。但是第二个命名空间到底是什么意思呢?

namespace
{
     class Logging{} 
}

namespace Admin\Logging
{
      class Logged_in
      {
          public function __construct()
          {
                /* some code here */
          }
      }

      /* other classes here */
}

感谢您的帮助。

【问题讨论】:

  • 我建议您阅读 PHP 手册的命名空间部分:php.net/manual/en/language.namespaces.rationale.php
  • 在此处发布之前是否已经这样做了,但大多数示例都解释了在命名空间之后附加了名称或与我遇到的命名空间结构不相似......不过谢谢:)

标签: php namespaces


【解决方案1】:

第二个声明是sub namespace 或嵌套命名空间。

在您的示例中,Logged_in 类的规范名称为 \Admin\Logging\Logged_in

【讨论】:

  • 谢谢。是的,我知道如何使用它...我只是很难将 Admin\Logging 转换为外行的术语,以便我可以进一步了解它们的联系...抱歉我的问题不清楚。
【解决方案2】:

命名空间的语法类似于目录层次结构:反斜杠 (\) 充当子命名空间的分隔符。

因此,第二个符号表示Admin 命名空间的定义,以及其中Logging 命名空间的定义。

请参阅documentation 了解更多信息。

【讨论】:

    【解决方案3】:

    回答我自己的问题,希望我做对了...

    用外行的话来说,Admin\Logging 的意思是“我在哪里可以找到这个文件”

    |--admin
    |  |-- Logging.php
    

    还有那个

    namespace
    {
        class Logging {}
    }
    

    因为两个命名空间都在同一个文件中,所以它可以作为一个库并被自动加载...

    哇...我不是很懂技术,但我就是这么理解的...谢谢大家的帮助。

    感谢:http://www.mwop.net/blog/254-Why-PHP-Namespaces-Matter.html

    【讨论】:

      猜你喜欢
      • 2011-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-14
      • 2013-07-24
      • 2011-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多