我正在学习PHP命名空间。我尝试将命名空间添加到我编写的类中,然后在另一个脚本中引用它。我已经这样做了:
MenuBuilder.php
namespace Andytest\MenuBuilder;
class MenuBuilder {
public function test() {
echo 'testing';
}
}
test.php (使用该类的地方)
namespace Andytest\MenuBuilder;
require_once 'MenuBuilder.php';
$Builder = new MenuBuilder;
$Builder->test();
这个输出正如我所期望的那样 - 输出“测试”字样。当我运行test.php。
但是我不确定为什么我需要test.php中的namespace Andytest\MenuBuilder
因为它已经在MenuBuilder.php中被删除了,这是test.php所要求的?如果我删除test.php中的namespace
行,它就无法正常工作。
我这样做是否正确?
答案 0 :(得分:1)
在test.php
中,您应该use Andytest\MenuBuilder\MenuBuilder;
而不是namespace Andytest\MenuBuilder;
因为您使用namespace
而不是use
,所以文件期望您创建的未在use
情况下指定的每个类都位于同一名称空间中,因此new MenuBuilder();
实际上是拨打new Andytest\MenuBuilder\MenuBuilder();
。
如果您要更改namespace
中的test.php
,则应该告诉您它无法找到MenuBuilder