首页 > 解决方案 > 如何创建仅在一个请求期间全局的“全局”范围变量?

问题描述

当一个请求到达我的 dancer2 应用程序时,我想设置一个对象,该对象可由处理此请求所涉及的所有包访问。

如何确保此对象仅在此单个请求中具有范围,并且其他请求无法访问?

具体来说,当执行通过我的库时,该对象应填充各种消息(错误、警告、调试消息等)。

显然,这些消息是特定于请求的,我担心天真地声明对该消息对象的全局引用会将其暴露给所有命中应用程序的请求。

我正在考虑在路由器中创建此消息类的实例,然后在处理此请求所涉及的所有方法中传递对它的引用。

我的直觉告诉我,我在这里从根本上缺少关于 dancer2 的架构方面的一些东西,所以我决定问你。顺便说一句,这是我在这里的第一篇文章,所以对于我的问题可能存在的任何缺点,我深表歉意。

标签: perldancer

解决方案


在我看来,您可以使用 avar来保存您的对象。

https://metacpan.org/pod/distribution/Dancer2/lib/Dancer2/Manual.pod#var

如果您需要即使从不知道 Dan​​cer 的方法也可以访问它,您可以使用 avar并将您的对象存储在使用弱引用的全局变量中。


推荐阅读