Точно. Забыл как это называется. "монорепозиторий" Спасибо @BoShurik
Максим можно погуглить о преимуществах и недостатках монорепозиториев.
Можно использовать git submodules или устанавливать компоненты через composer install --prefer-source. Правда composer по моему устанавливает репозитории из http в read-only режиме и вам придется заменить установленные пакеты на обычный ssh.
Проблема такого подхода еще в том что вам нужно постоянно переключаться между дирректориями с компонентами потому, что из корневой папки вы не сможете закоммитить изменения.
Когда это делается разово для тестирования каких-то багов или фич в зависимости, то это нормально. Но когда нужно делать это ежедневно и постоянно, то это утомляет.
Меня такая структура проекта вполне устраивает. Вам решать, подходит она вам или нет..
Есть еще нюансы с DDD, но я думаю вам сейчас это не нужноКакие нюансы? Я буду больше работать по паттерну CQRS. Как раз пример хороший и похожий.
Таким образом у вас будет следующие git репозитоии:
- ядро проекта
- компонент блога
- бандл блога
- компонент мероприятий
- бандл мероприятий
- компонент деятелей
- бандл деятелей
- компонент аккаунта
- бандл аккаунта
и др. х2
Но у этого подхода есть существенный недостаток. Часто нужно внедрять новые фичи или править баги которые требуют внесения изменений в несколько репозиториев одновременно. Это доставляет массу неудобств. Особенно когда нужно проходить через этап релиза. Протестировать в проекте работу правок можно только после внесения их в бандл и релизе его, а зарелизить бандл можно только после его тестирования, а тестирование бандла требует тестирования и релиза компонента, а делать релиз компонента не убедившись как оно будет работать в конечном продукте нельзя. В общем релизный ад. Я проходил через него и не советую другим. Это осмысленно только для больших проектов с большой командой разработчиков.
Как и сказал BoShurik, разделяйте проект на независимые модули и организуйте модули в папки и неймспейсы. Я пользуюсь этим методом уже несколько лет. Полет нормальный.
src/Events
или же они будут общими для всего приложения? Было бы не плохо всё таки ссылочку) Хочется начать проект качественно сразу. А пока не очень представляю архитектуру таких сервисов.... Если грамотно организовывать модули и взаимодействие между ними, то при разрастании проекта, можно будет вынести их в микросервисы без особо сильных переделок.