laravel middleware设置$ request属性,是否会影响性能

时间:2018-03-15 09:51:49

标签: laravel lumen laravel-middleware laravel-request

在我的一个中间件中,我使用了类似的东西

    $user = [ 
    'name' => 'noob',
    'phone' => '87548154'
   ]; /* which actually comes from redis cache */


    $request->attributes->set('user', $user);

在控制器中我使用它

$request->get('user')['name'] 

OR

$request->get('user')['phone'] 

由于这看起来非常灵活,我想在$ user数组中附加更多数据。 在laravel docs中,它在Request类的get()方法上面写的是

 * Gets a "parameter" value from any bag.
 * This method is mainly useful for libraries that want to provide some flexibility. If you don't need the
 * flexibility in controllers, it is better to explicitly get request parameters from the appropriate
 * public property instead (attributes, query, request).
 * Order of precedence: PATH (routing placeholders or custom attributes), GET, BODY

我的问题是,这是一个好主意吗?因为最常用的数据已经附加在中间件中。所以我不必一次又一次地在控制器方法中编写额外的代码。它会影响高流量服务器的性能吗?

1 个答案:

答案 0 :(得分:0)

我个人从不以这种方式工作。您可以使用Auth外观从任何位置访问当前用户,如下所示:

\Auth::user()

它使您可以在不必要时发送它,并且仍然可以从任何地方使用它(控制器,模型,刀片或其他任何东西)。

然后访问您的媒体资源:

\Auth::user()->phone

依旧......