Laravel如何知道Request类的实例包含用户当前正在发出的请求?

时间:2017-06-28 01:32:57

标签: php laravel

我正在学习PHP中的依赖注入, 当我在Controller中调用此函数时,

public function show(Request $request, $id)
    {
        $value = $request->session()->get('key');


    }

它有效,但是Laravel如何知道正在注入的Request类包含用户当前的请求,或者Request类的新实例?

1 个答案:

答案 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);

现在,每次应用程序将请求实例注入到您的控制器方法中时,它都会明确知道要使用哪个对象。