如何在父控制器中的每个请求中访问存储?

时间:2009-12-26 10:02:25

标签: perl catalyst

我正在尝试重构我的Catalyst应用程序,并且我想为我的控制器引入一个公共基类。此基本控制器将加载一些数据并将一些其他数据放入存储器中以用于每个请求。到了藏匿处我遇到了一些麻烦。简单的解决方案是在基本控制器中实现默认的auto操作。这有效,但我必须记住在派生控制器中始终调用超级auto。这很容易忘记,有更好的解决方案吗?换句话说:是否有一种简单的方法可以利用在派生控制器中不容易破解的请求处理?

1 个答案:

答案 0 :(得分:3)

我认为你不需要继承才能实现目标。您可能还有其他原因可以解释为什么继承对您的应用程序来说是一个好主意,但是当其他类组合方法更合适时,通常会过度使用继承。

特别是在这种情况下,Catalyst通过允许您在Root控制器中指定auto方法来提供此功能,该方法将始终在更具体的控制器的auto方法之前调用每一个要求。不需要继承。