はじめに
本連載では、PHP上で動作するアプリケーションフレームワークであるZend Frameworkについて紹介します。今回はバージョンの古いPHP環境で、Zend Frameworkを利用する方法について見ていきます。
最新のZend Framework 1.10はPHP 5.2.4以降を対象としていますが、それ以前のバージョンのPHPが動作している環境も少なくありません。今回はPHP 5.1系が動作している環境でZend Frameworkを使うことを考えて、(1)古いPHPの環境で最新のZend Frameworkがどこまで使えるか(2)Zend Framework1.6上での、将来の移行を考えたプログラミングについて見ていきたいと思います。
対象読者
PHPの基本構文は一通り理解しており、Zend Frameworkの基本的な動作を理解している方を対象としています。
必要な環境
本稿ではPHP 5.1.4以降、WebサーバとしてApache 2.2を、OSにCent OSを採用し、アプリケーションを作成していきます。
以下に、今回アプリケーション作成/動作確認に用いた環境を示します(インストールにあたっては最新安定版の使用を推奨します)。各項目の詳細なインストール手順は、「サーバサイド技術の学び舎 - WINGS」より「サーバサイド環境構築設定手順」を参照ください。
- Windows XP SP3/Cent OS 5.4
- PHP 5.1.6
- Apache 2.2.3
- Zend Framework 1.6.7、Zend Framework 1.10.4
LinuxやFreeBSDなどUNIX系OSをお使いの方もコマンドはほぼ一緒ですので、パスなどは適宜読み替えてください。
Zend FrameworkとPHPのバージョン
Zend Frameworkはバージョン1.6と1.7の間で大きな変更があり、それに関連して要求するPHPのバージョンも変わっています。
Zend Framework | 必要とするPHP |
1.7 - 1.10 | PHP 5.2.4以降 |
1.0 - 1.6 | PHP 5.1.4以降(PHP 5.2.3以降を奨励) |
PHP5.2.4以降を要求する、新しいバージョンのZend Frameworkにはプロジェクトの管理を補助してくれる強力なコンポーネントやツールがあります。従来のZend Frameworkでは、ページを一つ表示するウェブアプリケーションを作成するだけでも、複数のファイルを自分で作成する必要がありましたが、最近のZend Frameworkではコマンドラインからの命令一つで自動的にプロジェクトの骨組みが作成されるようになっています。
一方で、現在でもPHP 5.1系で運用している環境は少なくないと思われます。例えばRed Hat Enterprise Linuxの現行バージョンは 5ですが、このバージョンに添付されているPHPは標準では5.1系です。またRed Hat Enterprise LinuxをベースとしているCentOSもやはりPHPは5.1系です。
今回の記事では、このPHP 5.1系で運用されているサーバでZend Frameworkを使う必要のある人のためのヒントとなるべく書いてあります。新しいZend Frameworkにはさまざまな機能が拡張されていますが、ここではプロジェクトの自動生成の機能を中心に見ていきます。
新しいZend Frameworkがどこまで使えるか
まず最初に、PHP 5.1系の環境で、新しいZend Frameworkがどこまで使えるか見てみましょう。
Zend_Toolのプロジェクト作成機能
最初にプロジェクトの骨組をコマンドラインから作成できるか確認してみましょう。「test」という名前のプロジェクトを作成できるか試してみます。
CentOS$ ./ZendFramework-1.10.4/bin/zf.sh create test
▼
PHP Fatal error: Cannot access self:: when no class scope is active in /home/codezine/lib/ZendFramework-1.10.4/library/Zend/Tool/Framework/Provider/Signature.php on line 355 Fatal error: Cannot access self:: when no class scope is active in /home/codezine/lib/ZendFramework-1.10.4/library/Zend/Tool/Framework/Provider/Signature.php on line 355
このように、エラーが出て失敗してしまいます。上の例は Zend Framework 1.10.4の場合でしたが、プロジェクトの作成機能のあるZend Framework 1.8.0以降ではエラーの内容に多少の差があるにしろ、失敗してしまいます。Zend ToolコンポーネントがそのままではPHP 5.1系では動作しないことが確認できました。
作成されたプロジェクトの利用
次に、新しいZend Frameworkで作成したプロジェクトを古い環境で動かせないか試してみます。PHP 5.2系の動く環境を別に準備したうえで、まずプロジェクトの自動作成機能でプロジェクトを作成します。次に、PHP 5.1系の動く環境の上にZend Framework 1.10.4をインストールし、この作成したプロジェクトが動作するか確認してみます。
ここではサンプルとして、Zend_Formコンポーネントを利用した簡単なページを作成して表示させています。このように、Zend FrameworkのMVCモデルに関連するコンポーネントやZend_Applicationコンポーネントの、基本的な機能はPHP5.1系でも動作するようです。
上では「動作するようです」と書いていますが、これは決して動作することを保証しているものではありません。今回のサンプルのような単純な例に関してはたまたま動いているように見える、に過ぎません。
実際のプロジェクトで似たようなことをする場合には、Zend Frameworkの内部の動作を確認するか、次の節で紹介するように動作の保証されているZend Framework 1.6系を利用するのが良いでしょう。