php - 关于Laravel 全局数据的处理
PHP中文网
PHP中文网 2017-04-11 10:16:25
[PHP讨论组]

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

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

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

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

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(2)
迷茫

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

大家讲道理

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

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号