我正在学习 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 时它会输出“testing”这个词。
但我不知道为什么我需要
namespace Andytest\MenuBuilder
在 test.php 中,因为它已经在 MenuBuilder.php 中清除了,这是 test.php 所需要的?如果我删除 namespace
在 test.php 行它不起作用。我这样做正确吗?
最佳答案
在 test.php
你应该有 use Andytest\MenuBuilder\MenuBuilder;
而不是 namespace Andytest\MenuBuilder;
因为你用的是namespace
而不是 use
该文件需要您创建的每个未在 use
中指定的类大小写在同一个命名空间中,因此 new MenuBuilder();
实际调用new Andytest\MenuBuilder\MenuBuilder();
.
如果您要更改 namespace
在 test.php
它应该告诉你它找不到MenuBuilder
关于php - 在 2 个单独的脚本中使用 PHP 命名空间声明是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39506575/