Выход 4-й версии популярного фреймворка ознаменовался капитальными изменениями в структуре проектов. Включая официальную документацию, в отношении объединения кода отмечается следующее (http://symfony.com/doc/current/bundles.html):
В версиях Symfony до 4.0 было рекомендовано организовать собственный код приложения с помощью пакетов. Это больше не рекомендуется, и пакеты следует использовать только для совместного использования кода и функций между несколькими приложениями.
Во 2-й и 3-й версиях связка выполняла две основные задачи. 1) Если разработчик или группа разработчиков в своих разных проектах использовали один большой повторяющийся функционал, то его можно было выделить в отдельный пакет и перенести из проекта в проект. Хороший пример такого использования - система пользователей в любом проекте. Он включает модели User, Role, Permission (и, возможно, другие), контроллеры для объекта, а также контроллеры для входа в приложение, выхода из приложения (политика безопасности может быть другой одновременно) и шаблоны для просмотра. Еще один хороший пример - административная панель, фундамент у которой идентичен. 2) Symfony взял отдельные функции в разных каталогах с логической точки зрения и, соответственно, пространства имен путем объединения. Например, в одном из своих прошлых проектов я разделил пространства: система управления пользователями, геймификация приложений (цель социальной сети), пространство партнеров, гео-среда (для работы с картами и определения городов по IP), среда для платежных транзакций. . Следующее.
В моем следующем проекте я не хочу использовать ничего, кроме Symfony4, чтобы следовать лучшим практикам фреймворка во время реализации его новых функций. Как организовать разделение логически независимого кода на разные области, если официальная документация уже не настаивает на создании бандлов ??? Если все классы модели хранятся в одном каталоге, это создает путаницу и увеличивает время поиска нужного файла в структуре большого проекта. То же самое касается шаблонов и всего остального. Когда я работаю с одним функционалом, у меня только выпадающие каталоги этого функционала.
Неужели теперь Symfony поощряет вас определять структуру классов, шаблонов и тому подобного по своему усмотрению?