アクションからの戻り値を利用するのはアリ?ナシ?
$cの中を見てごにょごにょ判定するメソッドが書きたいという話です。
とりあえずforwardを使って、
sub default : Private { my ( $self, $c ) = @_; if ( $c->forward('is_hoge') ) { } } sub is_hoge : Private { my ( $self, $c ) = @_; return defined $c->req->param('hoge'); }
みたく書いてみましたが、forwardという単語に合わない気がしました。なので今度は
sub default : Private { my ( $self, $c ) = @_; if ( $self->is_hoge($c) ) { } } sub is_hoge { my ( $self, $c ) = @_; return defined $c->req->param('hoge'); }
のように直接サブルーチンを呼び出すようにしてみました。しかしこれはこれでちょっと気持ち悪いかも、とか思ったり。
ドキュメントを読んでも、アクションの戻り値に関してはautoに関することぐらいしか見つけられませんでした。ちなみにCatalyst::Manual::CookbookのXMLRPCの例ではsub add : Remoteが値を返していたりしますが(これはちょっと違うか)。
こういう場合、普通はどう書くのでしょうか。。。
まるごとPerl! Vol.1を読んでいたら、アプリケーションに追加する例が載っていました。sub default : Private { my ( $self, $c ) = @_; if ( $c->is_hoge ) { } } package MyApp; sub is_hoge { my ($c) = @_; return defined $c->req->param('hoge'); }うーん。これが王道っぽい気がする。。。