Как настроить экземпляры маршрута (Illuminate/Support/Facades/Route.php
) для использования уже зарегистрированных служб через DI?
Например, я регистрирую свой синглтон:
$this->app->singleton('api_controller', function ($app) {
return new Controller('config_value');
});
И сам контроллер:
class ApiController extends Controller
{
private $configValue;
public function __construct(string $configValue)
{
$this->configValue = $configValue;
}
public function getConfigValue()
{
return $this->configValue;
}
}
Затем объявляем маршрут:
Route::get('config-value', 'ApiController@getConfigValue')->name('getConfigValue');
Но после вызова API Route инициирует новый экземпляр ApiController, а не тот, который я объявил как singleton, поэтому config_value не передается контроллеру. Можно ли настроить экземпляры Route?
Пробовал альтернативный маршрут с экземпляром приложения, но, похоже, не находит службу api_controller:
Route::get('config-value', function () { return app('api_controller')->getConfigValue(); })->name('getConfigValue');
In Container.php line 752:
Class api_controller does not exist