Zend FrameworkのパッケージはZendのWebサイトからダウンロードでき、2007年2月末現在のバージョンはPreview 0.8.0です。また、通常版のダウンロードのほかに、Subversionのリポジトリから開発版を入手することも可能です。
現時点でZend Frameworkを使いたい方は、普段は開発版を利用し、公式リリースが出るたびに、新しい機能や既存APIの変更点などを確認していくと良いでしょう。
Zend FrameworkのMVCモデルは、Apache HTTP Serverのmod_rewriteの機能に依存しています。そのため、MVCモデルを利用する場合にはApache HTTP Serverか、これをベースに拡張したWebサーバ*が前提となります(MVCモデルの機能を使用しない場合は、IISなどほかのWebサーバと組み合わせて使用可能です)。
Zend Frameworkの現在のバージョンでは、コンパイル済みのApache2が同梱されるようになったため、Zend Frameworkの稼働に必要なランタイムが一括で導入可能になっています。また、当然ですがPHPのコミュニティーサイトからダウンロードできる通常のPHPも使用できます。
Zend Frameworkのパッケージは、zipまたはtar.gzで圧縮されていますが、展開すると次のようなディレクトリ構造になっており、それぞれの内容は表2のようになります。
demos
documentation/
incubator/
library/
tests/
LICENSE.txt
NEWS.txt
README.txt
Zend Frameworkのライブラリ(Coreが含まれるディレクトリ)をPHPのinclude_pathに設定することで、各クラス・インタフェースの呼び出しを簡略化できます。その際は次の2通りの方法が一般的です。
どちらを使っても良いのですが、後者の方法を用いることで、「ランタイムとなるPHPの設定に左右されなくなる」(配布の容易性)というメリットがあります。アプリケーションごとにFrameworkのバージョンを分けたい場合に使うと良いでしょう。ただし、どのURLへアクセスする場合にも、必ず参照されるようなFront ControllerとなるPHPスクリプトが存在する必要があります(Front Controllerについては後述)。
include_path = ".;C:/Development/application/library"
Zend Frameworkでは、Front ControllerパターンのMVCモデルが採用されています(図1)。この方式では、フロントコントローラーへアクセスを集中させた後、次のように各コンポーネントで処理を行います。
Routerの選択でコーディングの規約が多少変化するものの、Model-View-Controllerのレイヤーに分けてお互いを独立としたコンポーネントにする点において、Zend Frameworkはほかの多くのMVCフレームワークと変わりません。Zend Frameworkでは、各コンポーネントを別々のディレクトリに保管する次のようなディレクトリ構造*を推奨しています。
controllers/
models/
views/
利用者がコードの中で各ディレクトリを指定するような仕様*となっているので、このディレクトリ構造は使用する上での必須条件ではありません。RouterごとにAction Controllerのディレクトリを分けたり、Action ControllerごとにViewのディレクトリを分けたりすることも可能です。ただし、管理が煩雑になるため、特別な事情がない限りは推奨どおりに使用することをお勧めします。
Zend FrameworkのMVCモデルを使用するには、まずApache HTTP Serverのmod_rewriteを有効にする必要があります。httpd.conf内でrewrite_moduleがロードされていることを確認し、ルートディレクトリのAllowOverrideディレクティブの設定を変更します(リスト3)。これによって、Webサーバに公開されているすべてのディレクトリにおいて、.htaccessの設定が上書きされます。AllowOverrideの値は「All」でも構いませんが、ルーティング制御に必要なFileInfoを、.htaccessファイルの設定で上書きすることを許可する必要があります。
//mod_rewriteのロード
LoadModule rewrite_module modules/mod_rewrite.so
//Directoryディレクティブの設定
<Directory "C:/Program Files/Apache Group/Apache2/htdocs">
Options Indexes FollowSymLinks
AllowOverride FileInfo
</Directory>
次に、httpd.confの設定に合わせて.htaccessファイルを作成します。Zend Frameworkで推奨されている.htaccessファイルの設定はリスト4のようになり、拡張子がjs、ico、gif、jpg、png、css以外のファイルに対するアクセスをindex.phpへのアクセスへrewriteする設定になります。これをZend Frameworkを使用するアプリケーションのルートディレクトリに配置して、PHPスクリプトへのアクセスをindex.phpで一括制御します。
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
ここまででZend FrameworkのMVCモデルを使用する準備は整いました。次回は、各コンポーネントの使用方法を説明していきます。
本稿ではこれ以降、Apache HTTP Serverとの組み合わせを例として解説する。
controllersディレクトリには、Action Controllerが配置される。
ただし、Action Controllerのファイル名は命名規約が存在するので注意が必要(例えばIndexコントローラの場合、IndexController.phpというように命名しなければならない)。
本記事は、オープンソースマガジン2006年11月号「Zend Framework」で加速するPHP開発を再構成したものです。
日本アイ・ビー・エム システムズエンジニアリング株式会社
杉田直哉
日本アイ・ビー・エム システムズ・エンジニアリング株式会社(ISE)は、日本アイ・ビー・エムグループにおけるSE技術者の専門家集団として1992年7月に設立された。
発足以来、IBM製品を中心とした難易度の高い複雑なシステム構築や先進技術の適用場面において、卓越したITスキルによりお客様と開発現場を支援してきた。
近年は、仮想化技術・グリッドコンピューティング・Web 2.0・オープンソースソフトウェア等々の先進技術分野での支援も展開している。
Copyright © ITmedia, Inc. All Rights Reserved.