如何创建仅在一次请求期间为全局的 'globally' 作用域变量?

How to create 'globally' scoped variables that are global only during one request?

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

我怎样才能确保这个对象只在这个单独的请求中有一个范围并且不能被其他请求访问?

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

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

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

我的直觉告诉我,关于 dancer2,我在架构方面缺少一些基本的东西,所以我决定问你。顺便说一下,这是我第一次 post 在这里,所以对于我的问题可能存在的任何不足之处,我深表歉意。

在我看来,您可以使用 var 来固定您的物品。

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

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