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

时间:2016-09-15 08:39:29

标签: php namespaces

我正在学习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行,它就无法正常工作。

我这样做是否正确?

1 个答案:

答案 0 :(得分:1)

test.php中,您应该use Andytest\MenuBuilder\MenuBuilder;而不是namespace Andytest\MenuBuilder;

因为您使用namespace而不是use,所以文件期望您创建的未在use情况下指定的每个类都位于同一名称空间中,因此new MenuBuilder();实际上是拨打new Andytest\MenuBuilder\MenuBuilder();

如果您要更改namespace中的test.php,则应该告诉您它无法找到MenuBuilder