我正在学习PHP中的依赖注入, 当我在Controller中调用此函数时,
public function show(Request $request, $id)
{
$value = $request->session()->get('key');
}
它有效,但是Laravel如何知道正在注入的Request类包含用户当前的请求,或者Request类的新实例?
答案 0 :(得分:2)
如果查看public/index.php
,您可以看到Laravel通过捕获全局请求值来创建初始$request
对象。
// public/index.php ln 53
$request = Illuminate\Http\Request::capture()
然后将请求传递给Http\Kernel
进行处理,随后将$request
传递给sendRequestThroughRouter()
函数。在此函数中,请求实例绑定到应用程序容器。
// vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php ln 138
$this->app->instance('request', $request);
现在,每次应用程序将请求实例注入到您的控制器方法中时,它都会明确知道要使用哪个对象。