关于Laravel 全局数据的处理

WBOY
发布: 2016-09-08 08:43:50
原创
1577 人浏览过

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

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

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

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

回复内容:

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

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

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

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

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

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

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

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

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!