Dmitriy
выделяете интерфейс, в цикле в контроллере запускаете резолверы из разных модулей
Dmitriy
резолверы реализуют интерфейс в своих модулях
Dmitriy
как результат у вас слабая связь между модулями
Dmitriy
это к вопросу получения данных из разных модулей
Dmitriy
symfony tagged iterator
Павел
возможно модули выделили криво
Возможно да, а возможно и нет. Модуль профайл, модуль нотификации и управление оповещениями. А форма и запрос - один. Банальный bff в качестве которого и выступает контроллер
Павел
Или например рефакторинг и разделение, соединение модулей. Почему это должно влиять на http интерфейс не понятно
Kirill
Dmitriy
https://symfony.com/doc/current/service_container/tags.html#reference-tagged-services
Павел
Павел
В идеале модули или не общаются, или по ивентам (где нет сущностей), или через антикарапшен лайер
Павел
В разных модулях могут быть свои user, order сущности например. С разными свойствами нужные только в этом модуле. Но имеют один id, через который и соединяются
Павел
На практике все равно часто каша выходит, но надо стараться)
Павел
Павел
А вот внутри модуля, уже наверное можно что то такое намутить. Если без антикарапшена, а через di
Dmitriy
Нет единого верного пути
Dmitriy
у вас так, у нас так
Dmitriy
мы пробовали в одном проекте хттп слой "над модулями", нам не зашло, может что-то делали не так
Юра
https://habr.com/ru/post/427739/
Юра
Вот еще
Юра
Есть статья с примерами гексагональной или луковой архитектуры на ларавель
Юра
Как по мне все это имеет смысл если приложение довольно большое и сложное
Юра
Если это просто круд над базой, то никакого смысла нет
Kirill
Подскажите, пожалуйста, как ко всем роутам добавить префикс?
Вот так пробую, не добавляется
controllers:
resource: '../src/**/Controller/*'
type: annotation
prefix: /api
Kirill
а теперь добавляется)
Юра
Кеш наверное
Vlad
в любой не понятной ситуации делай rm -rf var
Юра
var/cache только
Konstantin
главное не /var
Vlad
у меня был такой кейс) сказал коллеге снеси var
Vlad
он пошел и снес /var
Vlad
хорошо что это был контейнер
Vlad
и шторма есть история
Kirill
А подскажите, пожалуйста, как маппинг для доктрины написать так, чтобы он подключал все Entity внутри модулей?
doctrine:
orm:
mappings:
App\Component\Benefit:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Component/Benefit/Entity'
prefix: 'App\Component\Benefit\Entity'
alias: App\Component\Benefit
Если пытаюсь указать /src/**/Entity, то получаю ошибку
Specified non-existing directory "/var/www/backend/src/**/Entity" as Doctrine mapping source
Юра
Я думаю ты занимаешься не тем
Юра
Тебе надо конфигурации в пхп делать
Юра
Мне так кажется
Юра
В доктрине глоб не будет работать скорее всего
Kirill
эх
Юра
И вообще лучше делать каждый модуль бандлом наверное
Юра
По крайней мере у симфы бандл это минимальный кусок общего кода
Юра
И подключать энтити из этих бандлов
Юра
Каждый бандл может добавлять в доктрин конфиг свой мапинг
Юра
Плюс можно вообще вынести бандлы потом в свой приватный репозиторий и подключать на разных проектах
Юра
И автоматически зависимости композером будут хендлится
Юра
Так что сильно рекомендую сразу этот подход
Dmitriy
бандлы как раз дока не рекомендует для БЛ
Dmitriy
Gleb
Ребята, а расскажите ваше мнение по вопросу:
есть сервис, условно на 15 методов. Примерно 50/50 они используют репозиторий.
Вы бы репозиторий вытащили в autowiring или инициализировали только в нужных методах?
с одной стороны оверхед получается на autowiring, с другой дублирование кода.
Konstantin
да нет там оверхеда
Konstantin
а тестировать проще когда зависимости явно передаются
Gleb
Спасибо, понял. Плюшки перевешивают спички.
Павел
Konstantin
да мошт рассылки какие, там обычно всегда вперемешку все
Павел
И при желании тестирования, такие сервисы тестировать боль. Добавляете 16 метод с новой зависомостью, и если собирали данный сервис не через di , то упадут 15 тестов на другие методы, так как конструктор невалидный
Gleb
Павел
какой то большой круд))
Gleb
Павел
Konstantin
*паста про ddd - это как подростковый секс*
Gleb
Все говорят что им занимаются, но занимается им мало лишь кто?)
Юра
DDD это когда сначала домен зарегать надо?
Павел
Юра
Домен, потом базу, потом доширак
Павел
Типо в идеале можно написать логику и сущности, сервисы и прочее не имея базы))
Konstantin
Юра
Doshirak Driven Development
Gleb
Gleb
Да я уже на этом учебном проекте палок себе повставлял.)
Пока работаешь с cms, как-то проще это всё. А тут минимальный небольшой сервис спроектировать и по факту нормально не смог.
Kirill
Kirill
Помогите. У меня в src лежат папки с подулями, в каждом модуле Entity. Мне сейчас нужно для всех модулей указывать путь до папки Entity, чтобы доктрина их увидела. Не получается в yaml формате одном инструкцией все подключить. Мне тут посоветовали на php конфиги использовать, но я что-то примеров не могу найти в документации. Как мне конфиги для доктрины описать в php? Куда какой файл класть/что писать/где подключать?)
Павел
Nikolay
Павел