Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

古いPHPを利用した新しいZend Frameworkの利用法

Zend Frameworkによる実践的なPHPアプリケーション開発 28(番外編)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2010/07/01 14:00

 本連載では、PHP上で動作するアプリケーションフレームワークであるZend Frameworkについて紹介します。今回はバージョンの古いPHP環境で、Zend Frameworkを利用する方法について見ていきます。

目次

はじめに

 本連載では、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」という名前のプロジェクトを作成できるか試してみます。

[リスト1] 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をインストールし、この作成したプロジェクトが動作するか確認してみます。

図1 PHP5.1.6上でZend Framework1.10.4を動かす
図1 PHP5.1.6上でZend Framework1.10.4を動かす

 ここではサンプルとして、Zend_Formコンポーネントを利用した簡単なページを作成して表示させています。このように、Zend FrameworkのMVCモデルに関連するコンポーネントやZend_Applicationコンポーネントの、基本的な機能はPHP5.1系でも動作するようです。

参考

 上では「動作するようです」と書いていますが、これは決して動作することを保証しているものではありません。今回のサンプルのような単純な例に関してはたまたま動いているように見える、に過ぎません。

 実際のプロジェクトで似たようなことをする場合には、Zend Frameworkの内部の動作を確認するか、次の節で紹介するように動作の保証されているZend Framework 1.6系を利用するのが良いでしょう。


  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XMLD...

  • WINGSプロジェクト 風田 伸之(カゼタ ノブユキ)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

バックナンバー

連載:Zend Framework入門

もっと読む

All contents copyright © 2005-2018 Shoeisha Co., Ltd. All rights reserved. ver.1.5