当前位置:  开发笔记 > 编程语言 > 正文

如何在Catalyst的请求端清理?

如何解决《如何在Catalyst的请求端清理?》经验,为你挑选了1个好方法。

我试图在每个请求使用Catalyst完成后调用一些代码.基本上,我想运行一些代码作为一部分finalize.据说Catalyst :: Plugin :: Observe会这样做,但它看起来完全坏了(只是加载插件中断Catalyst).

我正在尝试修复Observe插件,但这证明是固执的.

那么,是否有更好的方法可以在每个请求结束时调用一些清理代码?

(注意:这是在模型中,而不是控制器,所以我不能只使用sub end { ... })



1> jrockway..:

您实际上只需将代码直接添加到"MyApp"类:

package MyApp;
use Catalyst ...;

...

sub finalize {
    my $c = shift;
    $c->NEXT::finalize(@_);
    # do your thing
}

这就是所有插件的工作方式; 它们只是成为应用程序一部分的方法.

我同意让"finalize"生成一个观察事件更清晰......但这就是我们现在要处理的事情:)加入irc.perl.org上的#catalyst,我们可以进一步讨论.(我猜你是jrockway.)

编辑回复:

(注意:这是在模型中,而不是控制器,所以我不能只使用子端{...})

你知道你$cend,对吗?

package Your::Model;

sub cleanup {
   my $self = shift;
   ...
}

package Your::Controller;

sub end :Private {
    my ($self, $c) = @_;
    $c->model('Your::Model')->cleanup( ... )
}

或者你可以从MyApp::finalize我上面提到的那样做.

真正的问题是,为什么您的模型需要了解请求周期?这听起来非常紧密.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有