はじめに
前回では、主にリクエストパラメータの扱い方について説明しました。クライアントからデータを受け取る方法には、リクエストパラメータ以外にもパスに含める方法がありますが、特に日本語文字列を扱う場合には内部で扱う文字コードとクライアントとやりとりする文字コードをよく考えて設計する必要があります。本記事では、これまで2回に渡って説明してきたコントローラ編の最後として、アクションから別のアクションを呼び出すフロー制御について説明します。
また、第3回で簡単に紹介したChained
アクションについてもサンプルを交えて説明していきます。
対象読者
- Perlで簡単なスクリプトを作成したことのある方
- Webアプリケーションの基本的な仕組み(HTTPリクエスト、レスポンスなど)についての知識のある方
これまでの連載
- 初めてのCatalyst入門(1) PerlによるWebフレームワークCatalystとは?
- 初めてのCatalyst入門(2) Catalystアプリはどのように作るのか?
- 初めてのCatalyst入門(3) 処理の入り口はアクション
- 初めてのCatalyst入門(4) URLパスとリクエストパラメータ
必要な環境
本連載で紹介するサンプルなどで実行している環境は次の通りです。
CentOS 5.3
- Perl 5.8.9
- Catalyst 5.80013
また、動作確認を行ったWindowsの環境は次の通りです。
Windows Vista
- ActivePerl 5.8.9 Build 826
- Catalyst 5.80011
フロー制御
アプリケーションで共通する処理などをメソッドとして定義することもできますが、プライベートアクションとして定義した場合には、forward
などのフロー制御用メソッドを利用して呼び出すことができます。これらのメソッドはCatalystで定義されており、forward
以外に、detach
、visit
、go
があります。
例えばforward
を使用してアクションを呼び出すようにすると、コンテキストが自動的に渡される、例外処理ができるようになる、などのメリットがあります。
フロー制御用メソッドには次のものがあります。
メソッド名 | 概要 |
forward | 指定したアクションを実行し、呼び出し元に戻る |
detach | 指定したアクションを実行するが、呼び出し元には戻らない |
visit | begin、autoを含めて指定したアクションを実行し、呼び出し元に戻る |
go | begin、autoを含めて指定したアクションを実行するが、呼び出し元には戻らない |
forward
、detach
メソッドでは指定したアクションだけが実行されますが、visit
、go
メソッドでは、begin
やauto
などの組み込みアクションも(定義されていれば)含めて、新規リクエストであるかのように実行されます。