В документации обычно приводят пример сервис-провайдера, где регистрируемый сервис либо ни от чего не зависит, либо зависит от каких-то примитивных типов, передаваемых в конструктор, например, из конфига.
А что делать, если в конструктор сервиса нужно передать другой сервис?
UPD:
class ServiceA
{
public function __construct(
private int $scalarParam,
) {
}
}
class ServiceB {
public function __construct(
private ServiceA $serviceA,
private string $scalarParam,
) {
}
}
class ServiceAProvider extends ServiceProvider
{
public function register(): void
{
$this->app->singleton(ServiceA::class, function (): ServiceA {
return new ServiceA(config('params.param1'));
});
}
}
class ServiceBProvider extends ServiceProvider
{
public function register(): void
{
$this->app->singleton(ServiceB::class, function (): ServiceB {
$serviceA = ...; // Как его получить?
return new ServiceB($serviceA, config('params.param2'));
});
}
}