Преимущество использования "MyBundle \\": "src / MyBundle" над "": "src /" в Symfony 3 composer.json? - PullRequest
0 голосов
/ 10 декабря 2018

Чтобы перенести существующий проект Symfony 2.8 в Symfony 3.4, я сначала настроил новый проект Symfony 3.4.

После добавления моих пакетов в новый проект Symfony выдает ClassNotFoundException в AppKernel.php

ClassNotFoundException

Попытка загрузить класс "MyBundle" из пространства имен "Namespace \ MyBundle".Вы забыли оператор use для другого пространства имен?в AppKernel.php (строка 17)

Я нашел несколько вопросов и ответов для этой проблемы, и решение довольно простое:

// Symfony 2.8 composer.json
...
"autoload" : {
    "psr-0" : {
        "" : "src/"
    }
},


// Symfony 3.4 composer.json
...
"autoload": {
    "psr-4": {
        "AppBundle\\": "src/AppBundle"
    },
    "classmap": [
        "app/AppKernel.php",
        "app/AppCache.php"
    ]
},

Поскольку Symfony 3.4 не определяет "" : "src/" больше, но включает в себя бетонный комплект с "AppBundle\\": "src/AppBundle" решение состоит в том, чтобы добавить мой комплект здесь:

"autoload": {
    "psr-4": {
        "AppBundle\\": "src/AppBundle",
        "MyBundle\\": "src/MyBundle"
    },
    "classmap": [
        "app/AppKernel.php",
        "app/AppCache.php"
    ]
},

Однако, хотя это решает проблему, мне интересно, в чем преимущество включения бетонных комплектовсверх использования "" : "src/".

Недостаток этого подхода довольно очевиден: при добавлении нового пакета есть еще одно место, где я должен его указать.

В чем преимущество?Лучше добавить каждый пакет или я просто продолжаю использовать "" : "src/"?

...