请问下 $request->user (); 是什么用法?
在路由文件中看到了这段代码,看了user()的源码也没看明白,特来求教。
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Request类里面的user方法调用了
getUserResolver()
方法,getUserResolver()
方法返回了成员变量$userResolver
,这个类提供一个setUserResolver
方法设置$userResolver
,但是整个类里面并没有调用到这个方法,而且这个方法是public
,显然是给外部调用的可以通过
dd(app('request'))
观察到框架运行之后,Request
的$userResolver
是有值的,映射到了/vendor/laravel/framework/src/Illuminate/Auth/AuthServiceProvider.php
文件的83至85行可以看到是
registerRequestRebindHandler
方法,这里就对Request
设置了$userResolver
,然后将设置好的Request
重新注册到服务容器,这个方法里面调用了服务容器Auth
服务的userResolver()
方法,最终就相当于$request->user()
调用了Auth->userResolver()