Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 23.08.2019 05:46:21

Передача параметров в сервис-контейнер

Не могу разобраться с таким вопросом. Через URI передается параметр id, который доступен в контроллере (AlbumController) 
соответствующего роута. При создании контроллера нужно получить экземпляр класса обработчика (AlbumHandler)
конструктора контроллера . Этот обработчик AlbumHandler при создании в свою очередь требует экземпляр
другого вспомогательного класса определенного через интерфейс (FileStorage). И вот этот 
вспомогательный класс должен получать id из URI. Как добраться до параметров непонятно. Вообще передача параметров в "сервис-контейнер" для создания экземпляров не продумана или просто не описана.
    Несколько недель разбираюсь с Laravel, и сильно недоумеваю. С момента выпуска прошло 8 лет, и так не удосужились 
нормально описать функционал фреймворка. Работа сервис-контейнера непонятная. Идея управлять созданием 
экземпляров и разрешать зависимости в одном месте вроде как хорошая, но реализация непонятная. Такое усложнение и 
ради чего, чтобы получить ограничения и непрозрачность создания объектов? В итоге все эта "магия" просто отучает 
принимать решения как правильно организовать создание объектов и доступ к ним. Может я конечно не понимаю чего-то...хотелось бы чтобы это было так,
и на самом деле в этом плане у Laravel все продумано и удобно! )

Изменено AlexanderA (23.08.2019 06:12:37)

Не в сети

#2 23.08.2019 08:23:13

Re: Передача параметров в сервис-контейнер

...вспомогательного класса определенного через интерфейс (FileStorage). И вот этот 
вспомогательный класс должен получать id из URI.

Получай параметр не через конструктор, а через метод интерфейса. Это снимет проблему.


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#3 23.08.2019 08:43:25

Re: Передача параметров в сервис-контейнер

Есть такой вариант, только он неудобен тем что метод интерфейса может использовать свои приватные методы, в которых также нужен доступ к этим параметрам. Получается нужно через несколько уровней передавать один параметр.

Не в сети

#4 23.08.2019 10:51:54

Re: Передача параметров в сервис-контейнер

Ты излишне усложняешь. Не надо передавать параметр снова и снова, сохрани его в приватное свойство и используй. Короче, начни уже кодить это и увидишь, что всё не так страшно.
У меня есть сервисы, сохраняемые в конструкторе контроллера, которые позже в экшене получают объект из запроса и отдают его в другие сервисы. Никаких ментальных блоков я не испытываю. smile

Изменено artoodetoo (23.08.2019 10:56:39)


There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.

Не в сети

#5 24.08.2019 11:58:31

Re: Передача параметров в сервис-контейнер

Возможно и так...рассчитывал узнать как решают этот вопрос остальные

Не в сети

Подвал раздела