TOPシステム開発> detachメソッド
まるごとPerl!
使ってわかるCatalyst

第4回:Catalystの最重要オブジェクト
著者:アドウェイズ  加藤 敦   2006/9/14
前のページ  1  2
detachメソッド

   forwardとほぼ同じですが、detachを呼び出した後、呼び出し元に戻ってこないという特徴があります。リスト8で、最後の「$c->stash->{"message"}」の部分は、detachの呼出元に戻らない性質のため、実行されません。
リスト8:detachメソッドは呼び出し元に戻らない
sub hogehoge : Local{
   my($self, $c) = @_;
   $c->forward(…);
   $c->detach(…);
   $c->stash->{"message"} = "実行されません ";
}


アプリケーションクラスのメソッド

   アプリケーションクラスで定義したメソッドは、コンテキストオブジェクトから呼び出すことができます。コントローラーのどこからでも呼び出せるので、ユーティリティ的なメソッドを実装しておくと便利かもしれません(リスト9)。コンテキストオブジェクトから呼び出すため、第1引数が$cであることに注意しましょう。

リスト9:アプリケーションクラスのメソッドの例
sub to_utf8{
   my($c, $s) = @_;
   return Jcode::jcode($s)->utf8;
}


Catalystの動作フロー

   Catalystの動作フローは図4のようになっています。

Catalystの動作フロー
図4:Catalystの動作フロー

   まず、URIによる分岐(DISPATCH処理)があります。ここでコントローラークラスと実行するアクションが決まります。

   その後は、begin→auto→ACTION→end→finalizeと順に呼ばれます。autoに関しては、親のパスのコントローラークラスにautoがあれば、遡って親から子の順番で実行されます。finalizeは、Catalyst自身もいくつかの種類の後処理を持っていますし、プラグインに実装されている場合もあります。

   大きく四角で囲った部分がコントローラー部分です。この部分を実装して、アプリケーションを作っていきます。


前のページ  1  2

株式会社アドウェイズ 加藤 敦
著者プロフィール
株式会社アドウェイズ   加藤 敦
アフィリエイトシステムやモバイルサイトの構築などを経て、現在、技術マネージャーとして新規サービスの設計、システムの標準化などに携わる。個人的にCPANモジュールの開発や、オープンソースのプロジェクトに参加している。


INDEX
第4回:Catalystの最重要オブジェクト
  コンテキストオブジェクト
detachメソッド