【问题标题】:catalyst global subroutines催化剂全局子程序
【发布时间】:2012-10-30 21:10:53
【问题描述】:

在我正在构建的 Catalyst 应用程序中,我有几个子例程基本上做同样的事情,但它们都位于应用程序的不同部分。 Catalyst 中是否有一个中心位置,我可以从应用程序的任何位置调用子例程?我想避免重复代码。谢谢!

【问题讨论】:

    标签: perl global catalyst subroutine


    【解决方案1】:

    不知道这是否是最佳实践,但我没有任何问题将我的主模块与这样的功能混淆。然后可以从任何有您的上下文对象的地方(即任何地方)轻松调用它们。

     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();
         ...
     }
    

    【讨论】:

      【解决方案2】:

      Catalyst 现在基于Moose。您可以使用its roles 作为解决方案。

      【讨论】:

        【解决方案3】:

        如果这些函数应该在您的 Catalyst 应用程序之外可用,例如因为它们被您的模型使用,它们应该进入一个完全独立的模块。 如果它们确实是特定于 Catalyst 的,您可能希望创建可以转发或分离的私有操作,例如 403 not allowed 或 404 not found 错误页面。 如果它们只是普通的 Perl 子程序,您可以按照 mob 或 Root 控制器的建议将它们放在应用程序类中。 您能否说出一些功能,以便我们为您提供更好的解决方案?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-08
          • 2020-01-05
          • 1970-01-01
          • 2020-12-14
          相关资源
          最近更新 更多