php – 在哪里放置由中间件生成的新对象?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 在哪里放置由中间件生成的新对象?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1078字,纯文字阅读大概需要2分钟。
内容图文
![php – 在哪里放置由中间件生成的新对象?](/upload/InfoBanner/zyjiaocheng/779/bcdd69b7fabe4130ba4d0b0041fc044c.jpg)
PSR-7将很快标准化(我相信).这让我想到了中间件,例如Phly,StackPHP和ConnectJS使用的中间件.
ConnectJS的工作方式是,当中间件需要添加内容时,它会修改请求对象.例如,cookie-session在req对象上创建会话属性:
app.use(session({
keys: ['key1', 'key2']
}))
app.use(function (req, res, next) {
var n = req.session.views || 0 // <-- req.session is managed by the session middleware
req.session.views = ++n
res.end(n + ' views')
})
使用PSR-7,我们的Request和Response对象都是(应该是)不可变的,那么我们如何传递这样的附加数据呢?即哪里是存储“会话”对象或由身份验证中间件创建的“用户”对象的最佳位置?
解决方法:
PSR-7中的请求和响应对象实现为值对象,因此它们是不可变的.
每次需要不同的对象时,都会创建一个来自前一个实例的新实例,例如
$newRequest = $oldRequest->withMethod('GET');
从那时起使用新实例.
在中间件中,您必须将新实例传递给调用下一个中间件的next()函数(例如,参见here).
如果您需要在请求对象中存储根据当前请求计算的其他数据,则在ServerRequestInterface中定义了withAttribute和withAttributes方法,这些方法允许您完全执行此操作.
一个常见的用例是存储路由的结果,但您肯定可以使用它们来存储请求的其他附加数据,如会话或用户数据
内容总结
以上是互联网集市为您收集整理的php – 在哪里放置由中间件生成的新对象?全部内容,希望文章能够帮你解决php – 在哪里放置由中间件生成的新对象?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。