我最近一直在研究名称空间。我正在创建一个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();
一样访问Home。上面的代码会像那样工作吗?
答案 0 :(得分:1)
类的名称空间取决于声明它的名称空间,而不是它所包含的名称空间。如果是后者,那么就不可能清楚地知道什么名称空间将会出现。
如果您没有在声明类的文件的顶部写namespace Foo\Bar\Baz;
,则该类始终位于全局命名空间中。
答案 1 :(得分:0)
在您的情况下,Home不会成为Controller命名空间的一部分,因为您需要在class.home.php中定义命名空间,如:
namespace Controller;
class Home {
public function hello() {
}
}
而且你可以:
namespace Controller;
include "class.home.php";
new \Controller\Home();