perl - 如何创建仅在一个请求期间全局的“全局”范围变量?
问题描述
当一个请求到达我的 dancer2 应用程序时,我想设置一个对象,该对象可由处理此请求所涉及的所有包访问。
如何确保此对象仅在此单个请求中具有范围,并且其他请求无法访问?
具体来说,当执行通过我的库时,该对象应填充各种消息(错误、警告、调试消息等)。
显然,这些消息是特定于请求的,我担心天真地声明对该消息对象的全局引用会将其暴露给所有命中应用程序的请求。
我正在考虑在路由器中创建此消息类的实例,然后在处理此请求所涉及的所有方法中传递对它的引用。
我的直觉告诉我,我在这里从根本上缺少关于 dancer2 的架构方面的一些东西,所以我决定问你。顺便说一句,这是我在这里的第一篇文章,所以对于我的问题可能存在的任何缺点,我深表歉意。
解决方案
在我看来,您可以使用 avar
来保存您的对象。
见https://metacpan.org/pod/distribution/Dancer2/lib/Dancer2/Manual.pod#var
如果您需要即使从不知道 Dancer 的方法也可以访问它,您可以使用 avar
并将您的对象存储在使用弱引用的全局变量中。
推荐阅读
- c++ - 为什么更新现有密钥的优先级会产生不一致的结果?
- python - 通过spark从azure sql表中删除数据
- android - 从另一个 Activity (webview) 重新启动一个 Activity
- laravel - Laravel Backpack - 为数据透视表添加列
- oracle - 包“set serveroutput on”导致编译错误
- php - 鉴于帖子中的出生日期,我想在 Wordpress 帖子中以年月和日为单位显示年龄
- elasticsearch - ElasticSearch - 如何使用字段别名进行嵌套字段聚合?
- angular - 如何从代理后面正确安装和配置赛普拉斯?
- javascript - JavaScript 函数中的 Laravel 路由
- javascript - JsonResult 返回字段 DateTime 格式错误