はじめに
本連載では、PHP上で動作するアプリケーションフレームワークであるZend Frameworkについて紹介していきます。前回のZend_Viewについての記事で、MCVモデルの構成要素についての紹介が一通り終わりました。今回からは、Zend Frameworkを便利に使うためのさまざまなモジュールの紹介に移りたいと思います。
今回紹介するZend_Formは、ウェブフォームに関する機能を一通り揃えたモジュールです。前回紹介したZend_Viewのヘルパにもフォームを描画するものがありましたが、Zend_Formで提供する機能はずっと強力で、フォームの描画だけでなく解析や検証などのための機能も準備されています。
対象読者
PHPの基本構文は一通り理解しているが、フレームワークを利用したことはないという方を対象としています。
これまでの記事
- (1) フレームワークの全体像とインストール
- (2) Hello World!アプリケーションの作成
- (3) PHPでMVCアプリケーションを構築しよう - Zend_Controller(前編) -
- (4) PHPでMVCアプリケーションを構築しよう - Zend_Controller(中編) -
- (5) PHPでMVCアプリケーションを構築しよう - Zend_Controller(後編)-
- (6) 抽象化レイヤによるデータベースアクセス手法 - Zend_Db(前編) -
- (7) 抽象化レイヤによるデータベースアクセス手法 - Zend_Db(後編) -
- (8) Zend Framework におけるビューの処理 - Zend_View(前編) -
- (9) Zend Framework におけるビューの処理 - Zend_View(中編) -
- (10) Zend Framework におけるビューの処理 - Zend_View(後編) -
必要な環境
Zend FrameworkはPHP 5.1.4以降とWebサーバがインストールされている環境で利用可能です。本稿ではWebサーバとしてApache 2.2を、OSにWindows XPを採用し、アプリケーションを作成していきます。
以下に、今回アプリケーション作成/動作確認に用いた環境を示します(インストールにあたっては最新安定版の使用を推奨します)。各項目の詳細なインストール手順は、「サーバサイド技術の学び舎 - WINGS」より「サーバサイド環境構築設定手順」を参照ください。
- Windows XP SP2
- PHP 5.2.5
- Apache 2.2.8
LinuxやFreeBSDなどUNIX系OSをお使いの方もコマンドはほぼ一緒ですので、パスなどは適宜読み替えてください。
Zend_Formの概要
Zend_Formはウェブフォームを扱うためのさまざまな機能を提供するモジュールです。まず、Zend_Formを利用した処理の流れについて解説した後に、Zend_Formが提供する機能をざっと眺めてみます。
Zend_Formの処理の流れ
Zend_Formを利用してのフォームの処理の流れは、おおまかに下の図のようになっています:
まず、最初にZend_Formのインスタンスを作成します(図の1)。この後の処理は、基本的にはこのインスタンスを利用することになります。次にフォームの中に含まれるinput
タグに対応するZend_Formのフォーム要素を追加します(図の2)。また、フォームに関するさまざまな設定も行います。この時点で、ウェブのフォームに対応するZend_Formのインスタンスが完成します。
このように作成・設定されたZend_Formのインスタンスは、フォームのHTMLを出力するのに、またユーザーから送られてきたフォームへの入力を処理するのに用います。Zend_Formのrender
メソッドを利用すればフォームのHTMLとしての出力を得ることができます(図の3)。また、そのフォームへのユーザーの入力はisValid
でチェックと解析をすることができ、その解析の結果はgetValue
メソッドで取得することができます(図の4)。
Zend_Formの機能
Zend_Formが提供する機能は、Zend_Form自体が提供するものと、他のモジュールと連携して提供するものとあります。まず、Zend_Form自体が提供する機能としては次のものが挙げられます:
- フォーム要素の管理
- フォームの表示
- フォームから送信された内容の解析
また、他のモジュールと連携することで、提供する機能としては、次のものが挙げられます:
- 入力された内容のチェック(Zend_Validate)
- 入力された内容のフィルタによる操作(Zend_Filter)
- あらかじめ設定ファイルに記述したフォームの読み込み(Zend_Config)