はじめに
本連載では、PHP上で動作するアプリケーションフレームワークであるZend Frameworkについて紹介しています。今回から数回に分けて、Zend Frameworkの1.8から導入されたRADのツールについて説明していきます。
RADは「Rapid Application Development」の略で、プロトタイプを作成していきながら必要な機能を加えていくソフトウェア開発手法を指します。多くの場合には開発環境を利用し、コードなどを自動生成することで開発を迅速に行えるようにします。
今回から紹介するRADツールは、このうちのコードの自動生成などをコマンドラインから行うためのツールです。例えば、本連載の記事についてきたサンプルですが、毎回似たようなディレクトリ構造やファイルがありました。これまでは、(建前としては)いちいちそれらを作り直していたわけですが、今回から紹介するZend FramworkのRADのツールを利用すれば、そのような共通する部分は自動的に生成できるようになります。
このZend FramworkのRADツールは設定やリソースの管理を行うZend_Applicationと、コマンドラインツールの機能を提供するZend_Toolの2つのモジュールによって実現しています。今回は、これらRADツールを使うための設定と、簡単な使い方について見ていきたいと思います。
対象読者
PHPの基本構文は一通り理解しているが、フレームワークを利用したことはないという方を対象としています。
必要な環境
Zend FrameworkはPHP 5.2.4以降とWebサーバがインストールされている環境で利用可能です。本稿ではWebサーバとしてApache 2.2を、OSにWindows XPを採用し、アプリケーションを作成していきます。
以下に、今回アプリケーション作成/動作確認に用いた環境を示します(インストールにあたっては最新安定版の使用を推奨します)。各項目の詳細なインストール手順は、「サーバサイド技術の学び舎 - WINGS」より「サーバサイド環境構築設定手順」を参照ください。
- Windows XP SP2
- PHP 5.2.9-2
- Apache 2.2.12b
LinuxやFreeBSDなどUNIX系OSをお使いの方もコマンドはほぼ一緒ですので、パスなどは適宜読み替えてください。
RADツールを使うための準備
今回紹介するRADツールでは、コマンドラインからのコマンドで、自動的に最低限必要なファイルを配置してくれます。今まではディレクトリから.htaccessのようなファイルもいちいち作成していましたが、この辺も自動的に用意してくれます。
ただし、RADツールが作成するファイルのディレクトリ構造は、本連載の今までの記事でのディレクトリ構造とは異なるので、設定ファイルの書き換えが必要となります。この辺の違いを、実際にツールを使いながら見ていきましょう。
では、早速コマンドプロンプトを立ち上げて、RADツールを実行してみましょう。なお、Zend Frameworkは「C:\ZendFramework-1.8.4」に展開されているとします。
この記事ではZend Frameworkのバージョン1.8.4を利用する前提で執筆しています。執筆時点でZend Frameworkのバージョン1.9系も1.9.1までリリースされているのですが、1.9.0、1.9.1ともにWindows上では正常に動作しません。
この問題が解決されるまではZend Frameworkはバージョン1.9系ではなく、バージョン1.8系を使うのが良いでしょう。
C:\>ZendFramework-1.8.4\bin\zf.bat create project codezine Creating project at C:/codezine
コマンドラインのツールはzf.batという名前で、ここでは「create project codezine」という引数を与えて呼び出しています。これは「codezineという名前のプロジェクトを作成しなさい」という意味で、実行すると「C:\codezine」というディレクトリに必要なファイルが一通りできています。
ここで作成された主要なファイルの配置はリスト2のようになっています。
C:. └codezine │ ├─application │ │ Bootstrap.php リソースを作成するスクリプト │ │ │ ├─configs │ │ application.ini アプリケーションの設定 │ │ │ ├─controllers │ │ IndexController.php indexのアクションコントローラ │ │ ErrorController.php エラー処理のアクションコントローラ │ │ │ ├─models │ └─views │ ├─helpers │ └─scripts │ ├─error │ │ error.phtml エラー処理のためのビュースクリプト │ │ │ └─index │ index.phtml indexアクションindexサービスのビュースクリプト │ ├─library ├─public │ .htaccess Apacheのための設定 │ index.php フロントコントローラ │ └─tests
このように、前回までの「C:\codezine\htdocs」の代わりに「C:\codezine\public」というディレクトリが、「C:\codezine\zendapps」の代わりに「C:\codezine\application」というディレクトリができています。
そのため、まずApacheの設定ファイルを書き換える必要があります。Apacheの設定ファイル(筆者の環境では「C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf」)の179行目にある、DocumentRootの設定を書き換える必要があります。現在は「DocumentRoot "C:/codezine/htdocs"」となっているところを「DocumentRoot "C:/codezine/public"」に変更してください。
これでApacheを再起動すると、http://localhostに今作成したページが表示されるはずです(図1)。
エラーページの表示
リスト2にあるディレクトリ構造を眺めると、errorというディレクトリがビュースクリプトを置く場所に配置されています。もう気が付いた方もいるかもしれませんが、RADツールを利用してファイルを配置した場合、エラー処理のためのファイルも自動的に作成されます(ちなみに「C:\codezine\application\controllers\ErrorController.php」というファイルも作成されています)。
このエラー処理はスクリプトにエラーがあった場合や、存在しないコントローラ・サービスにアクセスが来た場合に呼び出されるもので、Webアプリケーションを開発する際には力強い味方になります。では、早速存在しないコントローラ「dummy」を呼び出してみて、どんなエラーが表示されるか眺めてみましょう。ブラウザで「http://localhost/dummy」にアクセスしてください。
筆者の環境では図2のような画面が表示されました(この時点で後にある、図3のような画面が表示されていれば問題はありません)。
これはなぜでしょうか?実は、RADツールが自動で生成するエラー処理関係のスクリプト(error.phtml)では、PHPコードを埋め込んである部分に省略タグを利用しています。つまり、「<?php ...?>」と書く代わりに「<? ... ?>」と書いてあります。
このような記述法を許すにはPHPの設定ファイルに変更を加え、省略タグを利用できるようにする必要があります。筆者の環境ではPHPの設定ファイルは「C:\Program Files\PHP\php.ini」で、これの133行目にあるshort_open_tagの設定を書き換える必要がありました。「short_open_tag = Off」となっている箇所を「short_open_tag = On」と書き換えてください。その上でまたApacheを再起動すると、次のような画面が表示されるはずです。
これで、RADツールを利用したWebアプリケーションの基本的な設定ができました。