169 похожих чатов

Всем привет. Есть сервисный класс который принимает в конструкторе токен,

сооветсвенно из-за этого не могу обычном способом инжектить этот сервис в других классах через конструктор, т.к. лара не понимает откуда брать токен. Пока что делаю так:
resolve(Service::class, ['accessToken' => $accessToken]);

Мб кто подскажет может есть способ поудобнее да покрасивше?

5 ответов

14 просмотров

можешь это в сервис провайдере настроить, вот пример https://laravel.com/docs/10.x/container#binding-basics

Никита- Автор вопроса
Dmytro 🇺🇦
можешь это в сервис провайдере настроить, вот прим...

Вы скинули ссылку как, собственно, создавать сервисный класс со стороны сервис контейнера, у меня в принципе и сейчас нормально создается. Токен передается в конструктор, всё ок, сервис создается нормально. Меня интересует именно с клиентской точки зрения, как мне этот сервис нормально инжектить? Т.е. условно есть другой класс который хочет воспользоваться этим сервисом. Как ему его получить? Параметром в конструкторе нельзя т.к. не откуда будет взять токен. Сейчас единственный вариант который я вижу это: SomeClass { private readonly IService $service; public function __construct() { $this->service = resolve(IService::class, ['accessToken' => $accessToken]); } } В принципе вот как я написал сейчас работает, но имхо не люблю юзать всякие хелперы лары в сервисном слое, поэтому ищу другой способ.

Никита
Вы скинули ссылку как, собственно, создавать серви...

не совсем так. По ссылке пример как научить сервис контейнер создавать нужный класс. После этого можно будет инжектить этот класс в любое место.

Никита
Вы скинули ссылку как, собственно, создавать серви...

Нет. Параметром в конструкторе. не откуда будет взять токен для этого как раз нужно настроить создание сервиса

Никита- Автор вопроса
Dmytro 🇺🇦
не совсем так. По ссылке пример как научить сервис...

Т.е. по вашему если я добавлю пример который вы скинули в провайдер, то такой код будет работать?: ExampleController { public function __construct( private readonly IService $service; ) {} }

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Ребят в СИ можно реализовать ООП?
Николай
33
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
у вас два процесса. один посылает другому сигнал. у вас есть код обоих процессов? если всё не так - расскажите как оно на самом деле. а именно кто кому чего, есть-ли консоли,...
Karagy
6
Карта сайта