2

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

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

namespace
{
     class Logging{} 
}

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

      /* other classes here */
}

谢谢您的帮助。

4

3 回答 3

1

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

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

于 2013-02-15T03:10:02.420 回答
0

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

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

有关更多信息,请参阅文档

于 2013-02-15T03:20:02.280 回答
0

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

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

|--admin
|  |-- Logging.php

然后

namespace
{
    class Logging {}
}

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

Wew...我不是真正的技术,但这就是我理解它的方式......谢谢大家的帮助。

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

于 2013-02-15T03:59:14.607 回答