超薄自动加载器和命名空间问题
Slim autoloader & namespace issue
我认为我的问题很常见,但即使有大量关于命名空间的文档,我也无法弄清楚我的代码有什么问题。
所以我使用的是 Slim 4.1,我将我的工作文件放在 app/
文件夹中的 Custom/
文件夹中。
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;
在顶部;
当我在 routes.php 中点击 new Manage();
时,我产生了以下错误:
Class 'Custom\Routes\Manage' not found in '[directories]/routes.php'
我很确定当我删除命名空间调用时,composer 会加载文件,因为自动加载的文件数量会发生变化。
也许我没有以正确的方式调用我的 Class,我现在真的不知道。
你能给我指路吗?
非常感谢
编辑:
我还用 composer dump-autoload -o
重新加载了作曲家
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"
我认为我的问题很常见,但即使有大量关于命名空间的文档,我也无法弄清楚我的代码有什么问题。
所以我使用的是 Slim 4.1,我将我的工作文件放在 app/
文件夹中的 Custom/
文件夹中。
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;
在顶部;
当我在 routes.php 中点击 new Manage();
时,我产生了以下错误:
Class 'Custom\Routes\Manage' not found in '[directories]/routes.php'
我很确定当我删除命名空间调用时,composer 会加载文件,因为自动加载的文件数量会发生变化。
也许我没有以正确的方式调用我的 Class,我现在真的不知道。 你能给我指路吗?
非常感谢
编辑:
我还用 composer dump-autoload -o
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"