在两个单独的脚本中使用PHP命名空间声明是正确的吗?


Is it correct to use PHP namespace declaration in 2 separate scripts?

我正在学习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