我正在学习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();
从这个输出是我所期望的-它输出单词'testing'当我运行test.php。
但我不知道为什么我需要namespace Andytest'MenuBuilder
在test.php,因为它已经在MenuBuilder.php中声明,这是由test.php所要求的?如果我在test.php中删除namespace
行,它就不起作用了。
我这样做对吗?
在test.php
你应该有use Andytest'MenuBuilder'MenuBuilder;
而不是namespace Andytest'MenuBuilder;
因为您使用namespace
而不是use
,所以文件期望您创建的每个未在use
中指定的类都在相同的命名空间中,因此new MenuBuilder();
实际上调用new Andytest'MenuBuilder'MenuBuilder();
。
如果你想改变test.php
中的namespace
,它会告诉你它找不到MenuBuilder