在我正在构建的 Catalyst 应用程序中,我有几个子例程基本上做同样的事情,但它们都位于应用程序的不同部分。Catalyst 中是否有一个中心位置,我可以从应用程序的任何位置调用子例程?我想避免重复代码。谢谢!
问问题
313 次
3 回答
3
不知道这是否是最佳实践,但我没有任何问题将我的主模块与这样的功能混淆。然后可以从任何有您的上下文对象的地方(即任何地方)轻松调用它们。
package MyApp;
...
sub my_frequently_used_sub {
my ($c, @args) = @_;
...
}
package MyApp::Controller::Foo;
...
sub some_action :Path {
my ($self, $c, @args) = @_;
...
my $result = $c->my_frequently_used_sub();
...
}
于 2012-08-13T21:30:49.637 回答
1
如果这些函数应该在您的 Catalyst 应用程序之外可用,例如因为它们被您的模型使用,它们应该进入一个完全独立的模块。如果它们确实是特定于 Catalyst 的,您可能想要创建可以转发或分离的私有操作,例如 403 not allowed 或 404 not found 错误页面。如果它们只是普通的 Perl 子程序,您可以按照 mob 或 Root 控制器的建议将它们放在应用程序类中。您能说出一些功能,以便我们为您提供更好的解决方案吗?
于 2012-10-30T13:10:53.567 回答