В лучших практиках рекомендуют отказаться от Бандлов в пользу NameSpace а примера я пока не нашел. Везде описывают как бандлами делить. А про то как не делить, не написали. Как ветвить то?
И например я чего-то выделит в свой NS - а в другом проекте мне это тоже пригодилось. Я же не могу просто так скопировать код. Появится дублирование. Нужно его как-то в репозиторий выделить или в пакет, и шарить между двумя проектами. Это будет частный пакет, не для всех. Но в симфони пишут, что выделять отдельный пакет рекомендуется только если собрался его в паблик посылать...
If you need to reuse some feature in your projects, create a bundle for it (in a private repository, to not make it publicly available). For the rest of your application code, use PHP namespaces to organize code instead of bundles.
Шарить между проектами - делать как бандл/композеровский пакет.
Просто использовать в проекте - создавать условно < project name >/src/Module/< module name> и всю логику писать в пределах App\Module\ModuleName.
Конфигурировать сервисы если понадобится, то в файлах App services
И если мне только для этого модуля нужно будет притянуть ещё других пакетов и пару бандлов каких-нибудь, то файл самого композера рискует превратиться в свалку, он ещё отсортирует и пипец... Ищи что от чего было установлено.
grabbee, та все норм, разве без деления на модули или бандлы композер не превратится в свалку?)) Конфигурировать надо только определенные сервисы, все что в неймспейсе src - автовайрится автоматически между собой. Если грамотно создать точку входа в модуль, то большая часть зависимостей будет проброшена в конструктор и это может занять только пару строчек в config/services.yml. Сам файл services.yml тоже поддается декомпозиции, необязательно там держать 500 строк, можно разбить на подфайлы и он будет их подхватывать (в доке симфони это описано). Если проект станет большим монолитом, то он обрастет фигней что так, что так, и со временем это будет рефакториться.
grabbee, перечитала еще раз комментарий - в модуле нужна будет только изолированная логика, это скорее куча сервисов - закидывать туда и контроллеры, и энтити необязательно (разве что если они находятся в едином неразрывном контексте с модулем)