我认为我的问题很常见,但即使有大量关于命名空间的文档,我也无法弄清楚我的代码有什么问题。
所以我使用的是 Slim 4.1 并将我的工作文件放在文件夹 Custom/
中在 app/
文件夹。
public/
-- index.php
app/
-- Custom/
---- routes/
------ manage.route.php
-- routes.php
src/
我将此行添加到 compose.json。
"autoload": {
"psr-4": {
"App\\": "src/",
"Custom\\": "app/Custom/" // my custom line
}
}
在 routes.php 中,我尝试使用
use
调用我的文件和我的文件的命名空间如下:use Custom\Routes\Manage as Manage;
在我类(class)的文件中:
namespace Custom\Routes\Manage;
在其顶部;当我点击
new Manage();
在 routes.php 我产生了以下错误:Class 'Custom\Routes\Manage' not found in '[directories]/routes.php'
我很确定当我删除命名空间调用时,composer 会随着自动加载的文件数量的变化加载文件。
也许我没有以正确的方式称呼我的类(class),我现在真的不知道。
你能给我指路吗?
非常感谢提前
编辑:
我还用
composer dump-autoload -o
重新加载了 Composer Composer 正在添加我的文件夹,所以问题不在那里,它是在 vendor/composer/autoloader_psr4.php 中编写的
'Custom\\' => array($baseDir . '/app/Custom')
最佳答案
正如 Nigel Ren 指出的那样,这只是一个命名空间问题。
Your namespace should be (I think) namespace Custom\Routes; as I think it's creating your class as Custom\Routes\Manage\Manage"
关于php - 超薄自动加载器和命名空间问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58490768/