一个简短的问题,为什么我要得到这个
自动加载器预期的类“ App \ Controller \ Admin \ AdminUnitController”将在文件“ /home/glen/public_html/businessdirectory.glendev.local/vendor/composer/../../src/Controller/Admin”中定义/AdminUnitController.php”。找到了文件,但是类不在其中,类名或名称空间可能在/home/glen/public_html/businessdirectory.glendev.local/config/services.yaml(已加载到资源“ / home / glen / public_html / businessdirectory.glendev.local / config / services.yaml“)。
我有AdminUnitController.php,其类名为AdminUnitController。一切都很好,直到我决定让管理控制器像这样在自己的子文件夹中:
Controller\Admin\AdminUnitController.php
答案 0 :(得分:1)
从自动加载器消息中,您的问题很清楚,文件确实在应有的位置,但是您的类或名称空间错误。
我猜您已经更改了文件结构,但没有适应您的命名空间。
给出文件 src\Controller\Admin\AdminUnitController.php
您的类应如下所示(请特别注意名称空间):
<?php
namespace App\Controller\Admin;
class AdminUnitController
{
// some code here
}
实际上这不是您在这里面临的Symfony行为,而是作曲家之一,它与自动加载器一起使用Symfony,并使用PSR-4类自动加载约定。
供参考
1)看到您的composer.json
包含以下行:
{
// some definitions here
"autoload": {
"psr-4": {
"App\\": "src/"
}
},
"autoload-dev": {
"psr-4": {
"App\\Tests\\": "tests/"
}
},
// some more definitions here
}
2)请参阅PSR-4命名约定:尤其是其文档中的示例:https://www.php-fig.org/psr/psr-4/#3-examples