【发布时间】:2020-04-01 18:34:00
【问题描述】:
如何配置路由实例(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 实例,而不是我声明为单例的实例,因此不会将 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
【问题讨论】:
标签: laravel laravel-5 dependency-injection routes