首页 > 关于Laravel 全局数据的处理

关于Laravel 全局数据的处理

laravel中, 我们可能通过中间件来处理auth信息, 也可能设计到一些业务逻辑的处理

这些数据在中间件中处理后, 应该存放到哪里?
比方说 userObject 这样的对象, 又或者只是一个变量. 后续的逻辑(service层, model层, view层)都可能用到.
那在中间件中获取,处理后的数据, 应该放在哪里. (一次请求中)

不使用框架时, 通常会随便定义一个超级变量 在存放. MVC中似乎不太建议使用全局变量来处理. 那在laravel中, 通常是放在哪里呢?

我知道可以存放在session app容器下. 但是感觉不是最佳的方案.


存在内存中。比如当前用户,当你调用 Auth::user 或其他跟当前认证用户有关的代码时,就可能会触发对应的 UserModel 去取用户对象,如果本次 request 中还没有生成,就去从数据库或缓存中取然后一直存在本次请求的内存中。
所有其他的变量、provider、binding、依赖注入、别名等等都是这个逻辑。而且具有很灵活的加载方式,以提高性能。比如路由、配置的缓存和加载,比如defer。

这一套是基于 Laravel 的一个核心东西:容器(container)。官方文档都是最开始就讲了这些理念,文档见 Core Concepts

Laravel 可定制的 bootstrap 启动流程中,一般第一个就是加载 Application,这就是一个大容器。你可以在任意地方 dd(app()) 查看当前 app 中的数据加载情况。


中间件只是用来过滤请求/响应的管道,数据该存数据库那就上Eloquent或者直接用DB facade,该存session就存session......

【热门文章】
【热门文章】