出于好奇,我想知道为什么Http / Kernel-> sendRequestThroughRouter($ request)设置了一个请求实例,并立即擦除它。
protected function sendRequestThroughRouter($request)
{
$this->app->instance('request', $request);
Facade::clearResolvedInstance('request');
...
这样做的目的是什么?
答案 0 :(得分:0)
因为它是appwide注册的
/**
* Register an existing instance as shared in the container.
*
* @param string $abstract
* @param mixed $instance
* @return void
*/
public function instance($abstract, $instance);
在容器中注册后,就我理解
而擦除未解析的版本答案 1 :(得分:0)
似乎我终于明白了这一点:
我做对了吗?
这引出了另一个问题:
管理和返回这些已解决的实例有什么意义:
if (isset(static::$resolvedInstance[$name])) {
return static::$resolvedInstance[$name];
}
return static::$resolvedInstance[$name] = static::$app[$name];
而不是总是直接从Container返回实例,如下所示:
return static::$app[$name];