子文件夹中的Symfony 4控制器产生错误

时间:2019-02-21 21:22:01

标签: symfony symfony4

一个简短的问题,为什么我要得到这个

  

自动加载器预期的类“ 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

1 个答案:

答案 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