如何创建仅在一个请求期间才全局的“全局”范围的变量?

时间:2019-01-20 12:37:03

标签: perl dancer

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

如何确保该对象仅在该单个请求中具有作用域,并且不能被其他请求访问?

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

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

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

我的直觉告诉我,就舞者2而言,从根本上讲,我在架构上缺少一些东西,所以我决定问你。顺便说一下,这是我的第一篇文章,对于我的问题可能存在的任何不足,我深表歉意。

1 个答案:

答案 0 :(得分:6)

在我看来,您可以使用var来固定对象。

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

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