глобальный сервис, его можно заинжектить. В контроллере так вообще передать его как зависимость и он будет доступен автоматом. А есть ли какой то красивый способ для сервисов, который зависят от данных, приходящих в контроллер? Например есть ProductService(Product $product), и чтобы его сделать, нужно либо создавать экземпляр после получения $product, либо инжектить сам сервис, а затем делать какой то сет типа $productService->set($product). Есть ли какое-то более изящное решение?
Ты же у сервиса всё равно методы дёргаешь, почему не передавать данные сразу в методы?
Ну тогда можно сделать сервис с пачкой статических методов. А если стейт нужен?
https://laravel.com/docs/10.x/container#contextual-binding
это да, но тогда вопрос как передать данные для контекстного биндинга, если они только в контроллере появляются
А чем метод setProduct не устраивает?)
если данные в request, то можно там где ты описываешь Сontextual binding там и сделать все, но лучше так не нужно делать, боль в поддержке
да устраивает, подумал есть какой нибудь более изящный подход))
а как можно request передать в contextual binding? я так делать конечно не буду, просто интересно
По мне так более очевидно и в поддержке норм.
Точно также как в случае просто bind, при использовании функции замыкания, первым аргументом передаёт Application, а он есть Котейнер.
а, ты имеешь ввиду через app вытащить реквест? получается контекстный биндинг он отложенный, когда вызываем сервис в нужном месте, реквест уже есть и можно собрать объект с нужными данными. Я правильно понял?
Я бы и от setProduct() воздерживаться, зачем он там нужен. Судь contextual Binding, в зависимости от условий вернуть тот или иной сервис. Получил сервис, в него передал продукт в ответ получил результат все, зачем все эти set, храниния состояний и т.д.
да это понятно. просто размышлял и подумал может я пропустил какой нибудь новый крутой подход. оказалось что нет))
Обсуждают сегодня