0

我最近一直在研究名称空间。我正在创建一个 MVC 框架并想尝试转向 PHP 5.3+ 功能。

假设我定义了一个命名空间,称之为 \Controller。

然后我想包含一个具有 Home 类的文件。

namespace Controller;

include "class.home.php";

文件内容:

class.home.php:

class Home {
    public function hello() {
    }
}

在这个例子中,Home 会是 Controller 命名空间的一部分吗?还是全局命名空间的一部分?

我希望能够像new \Controller\Home();上面的代码那样访问主页吗?

4

2 回答 2

1

类的命名空间取决于声明它的命名空间,而不是包含它的命名空间。如果是后者,就不可能清楚地知道某物将在哪个命名空间中。

如果您没有在声明类的文件顶部写入namespace Foo\Bar\Baz;该类始终位于全局命名空间中。

于 2012-11-22T09:32:10.803 回答
0

在您的情况下, Home 不会是 Controller 命名空间的一部分,因为您需要在 class.home.php 中定义命名空间,例如:

namespace Controller;

class Home {
    public function hello() {
    }
}

而且你可以:

namespace Controller;

include "class.home.php";

new \Controller\Home();
于 2012-11-22T10:14:09.883 回答