Я пытаюсь понять, как ввести зависимость в класс в Laravel.
Моя структура:
SimpleController extends BaseController
{
public function example(SimpleModel $model, SimpleValidationRequest $request)
{
$result = $model->doStuff()
return $this->makeResponse($result);
}
}
SimpleModel extends Model
{
public function doStuff(ComplexService $service)
{
$service->doComplexLogic($this);
}
}
Я зарегистрировал ComplexService
в своем собственный поставщик услуг:
class AppServiceProvider extends ServiceProvider
{
public function register()
{
$this->app->singleton(ComplexService::class);
}
}
Я хочу внедрить услугу прямо в метод doStuff
simpleModel, без необходимости вводить ее в контроллер, а затем в модель. Мы заняты перемещением монолитного приложения c в Laravel и имеем классы обслуживания, содержащие все сложные бизнес-логики c. Большая часть logi c разделяется между разными классами, поэтому метод контроллера может вызывать модель, которая вызывает службу, которая в конечном итоге выполняет 4 или 5 вызовов других служб, и я хочу иметь возможность внедрить другую службу в любой метод. которому он нужен, без необходимости отправлять его с контроллера полностью на нижний метод, который может в нем нуждаться.
Есть способ сделать это? Я искал в Интернете, но все, что я нашел, потребовало от меня внедрения службы в контроллер, а затем отправки ее через приложение оттуда, чего я хочу избежать.