我正在学习命名空间和psr-4自动加载。 在我的应用程序中,我只能在composer.json中的psr-4下加载第一个对象的类。
我会更好地解释,这是我的情况:
文件夹结构:
app - core -- Foo --- Foo.php src - Bar -- Bar.php
在composer.json
中{
"autoload":
{
"psr-4":
{
"core\\" : "app/core/",
"myapp\\" : "src/"
}
}
}
仅加载app / core下的类。如果我使用\core\Foo\Foo
就像魅力,但如果我使用\myapp\Bar\Bar
不起作用。当然,我用composer dump-autoload -o
更新了自动加载,并尊重了区分大小写的字母。
我的错误在哪里?提前谢谢: - )
答案 0 :(得分:2)
每个文件中您当前的命名空间是什么?根据您在composer.json
中的文件夹结构和设置,这些是您应该拥有的值:
Bar\Bar.php
应该有
<?php
namespace myapp\Bar;
class Bar {}
而
Foo\Foo.php
应该有
<?php
namespace core\Foo;
class Foo {}
然后,您应该可以使用new myapp\Bar\Bar
和new core\Foo\Foo
访问它们。
您的文件名和类名相同非常重要。