Вы можете просто добавить код прямо в ваш класс "MyApp":
package MyApp;
use Catalyst ...;
...
sub finalize {
my $c = shift;
$c->NEXT::finalize(@_);
# do your thing
}
Так работают все плагины; это всего лишь методы, которые становятся частью вашего приложения.
Я согласен, что создание finalize для генерации события, которое нужно наблюдать, является более чистым ... но это то, с чем мы должны сейчас работать :) Присоединяйтесь к #catalyst на irc.perl.org, и мы можем обсудить его дальше. (Как вы, наверное, догадались, я - джоквей)
Отредактировано, чтобы ответить:
(Примечание. Это модель, а не контроллер, поэтому я не могу просто использовать вспомогательный конец {...})
Вы знаете, что у вас есть $c
в end
, верно?
package Your::Model;
sub cleanup {
my $self = shift;
...
}
package Your::Controller;
sub end :Private {
my ($self, $c) = @_;
$c->model('Your::Model')->cleanup( ... )
}
Или вы можете сделать это с MyApp::finalize
, как я предлагал выше.
Реальный вопрос в том, почему ваша модель должна знать о цикле запросов? Это звучит как ужасно тесная связь.