Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Не могу разобраться с таким вопросом. Через URI передается параметр id, который доступен в контроллере (AlbumController)
соответствующего роута. При создании контроллера нужно получить экземпляр класса обработчика (AlbumHandler)
конструктора контроллера . Этот обработчик AlbumHandler при создании в свою очередь требует экземпляр
другого вспомогательного класса определенного через интерфейс (FileStorage). И вот этот
вспомогательный класс должен получать id из URI. Как добраться до параметров непонятно. Вообще передача параметров в "сервис-контейнер" для создания экземпляров не продумана или просто не описана.
Несколько недель разбираюсь с Laravel, и сильно недоумеваю. С момента выпуска прошло 8 лет, и так не удосужились
нормально описать функционал фреймворка. Работа сервис-контейнера непонятная. Идея управлять созданием
экземпляров и разрешать зависимости в одном месте вроде как хорошая, но реализация непонятная. Такое усложнение и
ради чего, чтобы получить ограничения и непрозрачность создания объектов? В итоге все эта "магия" просто отучает
принимать решения как правильно организовать создание объектов и доступ к ним. Может я конечно не понимаю чего-то...хотелось бы чтобы это было так,
и на самом деле в этом плане у Laravel все продумано и удобно! )
Изменено AlexanderA (23.08.2019 06:12:37)
Не в сети
...вспомогательного класса определенного через интерфейс (FileStorage). И вот этот
вспомогательный класс должен получать id из URI.
Получай параметр не через конструктор, а через метод интерфейса. Это снимет проблему.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Есть такой вариант, только он неудобен тем что метод интерфейса может использовать свои приватные методы, в которых также нужен доступ к этим параметрам. Получается нужно через несколько уровней передавать один параметр.
Не в сети
Ты излишне усложняешь. Не надо передавать параметр снова и снова, сохрани его в приватное свойство и используй. Короче, начни уже кодить это и увидишь, что всё не так страшно.
У меня есть сервисы, сохраняемые в конструкторе контроллера, которые позже в экшене получают объект из запроса и отдают его в другие сервисы. Никаких ментальных блоков я не испытываю.
Изменено artoodetoo (23.08.2019 10:56:39)
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
Не в сети
Возможно и так...рассчитывал узнать как решают этот вопрос остальные
Не в сети
Страницы 1