Maks
https://symfony.com/doc/current/messenger.html#envelopes-stamps
Vadim
https://symfony.com/doc/current/messenger.html#envelopes-stamps
Можно события прямо из сущности кидать.
Vadim
что имеешь в виду?)
Кидаешь из сущности событие, а обработчики (те, что имплементят MessageHandlerInterface) запускать на пост флаше.
Maks
сложно...
Maks
по сути вот что мне нудно было
Maks
из коробки короч)
Vadim
сложно...
https://pastebin.com/Jy0Gzg8f
Maks
https://pastebin.com/Jy0Gzg8f
очень сложно!!!
Maks
нет конечно)
std::mechanicus
Сложна
std::mechanicus
Не понятно
Vadim
Не фесора. Она была задолго до.
std::mechanicus
сложные преколы
artem
всем привет) а никто ничего не слышал об этом rfc? https://wiki.php.net/rfc/named_params
Vadim
Слышали.
artem
там вообще по нему продвижения какие то есть?
Vadim
> 2013 год > 2020 год Ты как думаешь?
artem
ну думаю не приняли и врядли в ближайшие версии вообще вспомнят
Bekzod
Bekzod
Здравствуйте, я покапался в симфони а точнее в роутере и заметил эти строчки. Я хотел узанть как роутер или ресолвер получает доступ к контейнеру чтобы создать зависимости и внедрить их в конструтор контроллера. Но здесь контроллер создается просто через new class. Как так? а если я что то импортирую в конструкторе? Можете помочь понять этот момент спасибо.
Vadim
Ну так это просто инстанс. Смотри дальше, где диспатчатся события FilterControllerEvent и FilterControllerArgumentsEvent, там уже собираются аргументы, достаются нужные сущности по парам конвертеру и так далее.
Bekzod
Хмм хорошо спасибо
Vadim
Здравствуйте, я покапался в симфони а точнее в роутере и заметил эти строчки. Я хотел узанть как роутер или ресолвер получает доступ к контейнеру чтобы создать зависимости и внедрить их в конструтор контроллера. Но здесь контроллер создается просто через new class. Как так? а если я что то импортирую в конструкторе? Можете помочь понять этот момент спасибо.
А доступ к контейнеру не всегда нужен. Зависит от аргументов контроллера. Если там простой реквест, то хватит RequestValueResolver. В общем, там есть пачка аргумент резолверов, по которым проходится симфони и достает аргументы, которые может вернуть один из резолверов. Можно еще свои резолверы писать.
Bekzod
А этим ресолверам объект контейнера передается через конструктор?
Vadim
Остальным не нужен он
Vadim
Только ServiceValueResolver
Этот резолвер как раз и шарится в контейнере.
Bekzod
Никак. Читай про автовайринг.
А это ведь не тоже самое что и dependency injection?
Vadim
А это ведь не тоже самое что и dependency injection?
Автовайринг относится к dic, просто одно из его дополнительных возможностей
Vadim
Автовайринг - это когда сам контейнер знает, что нужно твоим сервисам, а не ты инжектишь в свои сервисы контейнер
Bekzod
Понятно, спасибо почитаю про автовайринг.
Ilya 🃏
Привет всем, может кто направить на путь истинный?) Как нужно правильно делать, если мы в сервис А интегрируем сервис Б, а в какой-то момент понадобилось и в сервис Б внетрить сервис А, но наступает циркулярка. Как правильно все оформить в этом случае? Я напрямую в конструктор каждого сервиса интегрирую другие сервисы, типа того: public function __construct( EntityManagerInterface $entityManager, ParameterBagInterface $parameterBag, Services\Storage $storage, Services\School $school, Services\Lesson $lesson ) { $this->entityManager = $entityManager; $this->parameterBag = $parameterBag; $this->storage = $storage; $this->school = $school; $this->school = $lesson; }
Ilya 🃏
Может есть какие базовые доки в этом плане? Гугл не дал особых результатов, везде решаются локальные проблемы, но не базовые
Vadim
Сервис А принимает Б, который принимает А?
Ilya 🃏
Сервис А решает штуки с Entity A, а сервис Б отвечает за штуки Entity Б. И так вышло, что в какой-то момент они стали друг на друга ссылаться в методах
G
Либо через сеттеры инъектить, либо выносить общую функциональность в сервис В (что лучше)
G
Оч редко бывает, когда области ответственности действительно пересекаются. Мне кажется, вам нужно лучше разделить сервисный слой на сервисы. Скорее всего, их должно быть больше, чем два.
Ilya 🃏
Ну там не совсем общая функциональность. Если уточнить, то у нас есть Занятия (А) и Домашние задания (Б). Когда мы получаем Занятие (А), то отмечаем Домашку как прочитанную (обращаемся к методу Б). Но тут пришлось обратиться к Занятию (А) из сервиса Домашки (Б) , чтобы при верном решении Домашки (метод Б) указать Занятие (А) пройденным. Делается это через метод Занятие (А), конечно же.
Ilya 🃏
Т.е. сами по себе методы довольно плотно принадлежат своим ентити: Отметить занятие пройденным - принадлежит Занятию. Отметить домашку прочитанной - принадлежит Домашке.
Ilya 🃏
Сервисам*
Ilya 🃏
Как решение была предложена идея сделать серсис-агрегатор, который будет содержать в себе все сервисы и через который к ним можно будет обращаться
Ilya 🃏
Можно ли так делать?
Ilya 🃏
Я пока еще не продумал до конца, сможет ли это привести опять же к циркулярке)
Ilya 🃏
Т.е. появляется сервис Ц, который содержит в конструкторе сервис А и Б. И подключаем его к обоим сервисам...
Ilya 🃏
Привело...)
HaSh
Всем привет. Нид хелп. Создал я проект с нуля на симфони 4,3. Добавил psysh что бы интерактивно с эти всем играться через PsyshBundle. В src создал свой бандл HalitBundle. Создал там простейший сервис. Конфиг к нему. DependencyInjectionExtension, как в документации описано Теперь, хочу проверить $ bin/console debug:config HalitBundle и получаю фигу. The extension with alias "halit" does not have configuration. Может кто подскажет, где собака зарыта?
HaSh
Через psysh, говорит, что нет такого сервиса в контейнере.
Vadim
Configuration сделал?
HaSh
HaSh
https://symfony.com/doc/current/bundles/configuration.html
HaSh
Да, вроде пробывал, не прокатило.
Vadim
Да
HaSh
Ща еще раз попробую.
HaSh
HaSh
Все так же.
HaSh
HaSh
Vadim
Покажи extension
HaSh
HaSh
Я так понимаю, что если все верно, он должен в контейнер, мой сервис положить
HaSh
HaSh
Но там только контроллер попадает, да и то потому что я его в роутах прописываю
HaSh
Михаил
Сервис А решает штуки с Entity A, а сервис Б отвечает за штуки Entity Б. И так вышло, что в какой-то момент они стали друг на друга ссылаться в методах
Комбинаторный взрыв 💥 разрабатываешь... если продолжишь - не завидую... рефакторь- разделяй интерфейсами... это в крации
Михаил
Аккуратно с такими смайлами. На нервах и забанить случайно можно
Похуй, уровень чата- новичок, короч один хуй чат не оч- не о чем
Maks
Суп, новички! А еще холиварят на тему пробелы/табы, 4/2?
Maks
в сериале? какой сезон?
Vadim
в сериале? какой сезон?
https://www.youtube.com/watch?v=AXLoRpKnK8U
Maks
Alexander
😂
Anonymous
Привет. А когда джойнишь связи в конструкторе запросов, нужно ли прописывать условие связывания или доктрина его автоматически подставит на основе метаданных связей?