在我的一个中间件中,我使用了类似的东西
$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
我的问题是,这是一个好主意吗?因为最常用的数据已经附加在中间件中。所以我不必一次又一次地在控制器方法中编写额外的代码。它会影响高流量服务器的性能吗?
答案 0 :(得分:0)
我个人从不以这种方式工作。您可以使用Auth
外观从任何位置访问当前用户,如下所示:
\Auth::user()
它使您可以在不必要时发送它,并且仍然可以从任何地方使用它(控制器,模型,刀片或其他任何东西)。
然后访问您的媒体资源:
\Auth::user()->phone
依旧......