Bundle — это связующее звено между приложением и фреймворком. По аналогии с библиотеками, которые обычно разбиты на 2 пакета: сама библиотека (framework agnostic) + bundle (Symfony, Laravel, etc.). Я бы не стал держать код самого приложения в в bundle, потому что это просто неудобно + лишняя зависимость от фреймворка там, где и без этого можно обойтись.
Бандл - это компонент приложения, привязанный к фреймворку и решающий определенный класс задач. Большинство бандлов не переиспользуются.
Часть бандла - контроллеры, вьюхи, код фронтенда, команды. Имеются описания сервисов. Сам код бизнес-логики в них не зависит от фреймворка (ага, framework agnostic) , но все остальное, что перечислил выше, зависит.
Поэтому вынесение их - идея не очень хорошая. Выносить несколько файлов в отдельный пакет? Лучше это сделать потом, если понадобится использовать их вне пакета ("если", а не "когда"), и отрефакторить.
А какую альтернативу ты предлагаешь? Все 100500 контроллеров, вьюх и т.д. в куче держать? Не смотря на то, что они прекрасно отделяются друг от друга?
А вот, кстати - если так мелко бить на пакеты, что делать с общими интерфейсами, которые слишком общие, чтобы четко принадлежать какому-то из пакетов?
Вариант по типу laravel/contracts первым приходит в голову, но тоже странноват. По пакету на набор интерфейсов по смыслу - ну не знаю, как то жирновато.
Есть бандл ядра приложения, в котором описываются основные пакеты, относящиеся к большинству областей.
Но когда приложение разрастается, хочется, чтобы некоторые пакеты хотели иметь в зависимостях не только ядро, но и часть других пакетов.
Это не очень красиво, наверное, но я не нашел другого способа.
ага и какие уровни попадают в пакеты - Domain и Infrastructure? или все ...
как раз ломаю голову над этим
Sub-domain.