【发布时间】:2020-07-17 03:47:12
【问题描述】:
我正在尝试构建一个项目,以便自动生成的一些代码位于子文件夹 generated/ 中,但它与父目录中的文件具有相同的命名空间。
例如,我有这个结构,它给了我错误PHP Fatal error: Uncaught Error: Class 'MyProject\Foo' not found。
这样的不同文件夹中的 2 个不同文件是否可以具有相同的命名空间?
--lib/
----Foo.php
----generated/
----generated/Bar.php
lib/Foo.php
<?php
namespace MyProject;
class Foo {
...
}
lib/generated/Bar.php
<?php
namespace MyProject;
class Bar {
public function __construct() {
$foo = new Foo();
}
}
我的自动加载部分如下所示:
"autoload": {
"psr-4": {
"MyProject\\" : "lib/"
}
},
【问题讨论】:
-
是的,这完全有可能。您只需要确保
Foo.php在某个时候是included,无论是显式地还是通过自动加载。 -
我的 composer.json 文件会自动加载整个
MyProject命名空间。 -
您是否也在加载自动装载机……?如果您直接调用生成的文件并且它不包含自动加载器,则不会发生这种情况......
-
我没有在我的库中加载自动加载器,但在一个项目中我正在使用这个库,是的。我在
lib/下的文件/文件夹的重置按预期工作。
标签: php namespaces