ダウンロード サンプルファイル (8.9 KB)
アプリケーションのバックポート
前の節では自動的に作成したアプリケーションを無理矢理PHP 5.1系の動いている環境で動かしてみました。しかし、これは動作が保証されない状態ですので、あまりお勧めできるものではありません。そこで、先程と似たような条件ですが、PHP 5.1系の動いている環境にZend Framework 1.6系をインストールして、その上でZend Framework 1.10で作成したプロジェクトを実行してみましょう。
上と同様に、プロジェクトをそのまま実行しようとするとエラーで停止してしまいます。これは、プロジェクトのindex.phpでZend_Applicationコンポーネントを利用しているからです。そこで、Zend_Applicationコンポーネントなどを利用しないように少し手を入れて動作するようにしましょう。
index.php の置き換え
新しいプロジェクト内でのindex.phpの動作は次のようになっています:
- ファイルの置かれているパスなどの設定
- インクルードパスの設定
- Zend_Applicationコンポーネントの初期化と実行
このうち(3)を置き換えてZend Framework 1.6系で利用できるようにします。Zend_Applicationコンポーネントの内部ではアプリケーションの部品の作成(ブートストラップ)とフロントコントローラへの処理のディスパッチが行われています。また、標準ではブートストラップの際に作成されるのはフロントコントローラだけです。
そこで(3)の処理の代わりにフロントコントローラの作成とディスパッチを行うような処理を入れてやれば、他の部分に問題がなければアプリケーションが動作するはずです。まず、置き換えた部分を示します。
/** Zend_Application */
require_once 'Zend/Application.php';
// Create application, bootstrap, and run
$application = new Zend_Application(
APPLICATION_ENV,
APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
->run();
▼
/* フロントコントローラーの呼び出し */ require_once 'Zend/Controller/Front.php'; $front_controller = Zend_Controller_Front::getInstance(); $front_controller->setControllerDirectory(APPLICATION_PATH.'/controllers'); $front_controller->dispatch();
このような修正を行ってアプリケーションを実行してみます。
これで、最低限アプリケーションが実行できるようになりました。
設定ファイルの読み込み
Zend Applicationコンポーネントには主に3つの機能があります。先程述べたブートストラップ、フロントコントローラへのディスパッチ以外に、設定ファイル(application.ini)の読み込みがあります。
この設定ファイルには、コンポーネントに関する設定と、PHPの挙動を制御する設定とが記述されています。この「PHPの挙動を制御する設定」には、例えばエラーメッセージの表示等に関する設定もあります。そこで、この設定を読み込む機能をつけ加えることにしましょう。この機能を「Optionsクラス」で実装します。
まず、このクラスのコンストラクタから見ていきましょう。
class Options {
...
private function __construct()
{
/* (1)設定ファイルの読み込み */
$config_file = APPLICATION_PATH . '/configs/application.ini';
$this->config = new Zend_Config_Ini($config_file, APPLICATION_ENV);
$this->options = $this->config->toArray();
/* (2)PHP関係の設定 */
if (!empty($this->options['phpsettings'])) {
$this->setPhpSettings($this->options['phpsettings']);
}
}
}
ここでは、まず(1)設定ファイル(application.ini)を読み込んでいます。これはZend_Configコンポーネントを利用してINIファイルを解釈し、それを配列に変換しています。
次に(2)その設定に「phpsettings」という項目があった場合には、解釈にまわしています。この処理を実際に行っているのが「setPhpSettingsメソッド」です。
class Options {
...
private function setPhpSettings(array $settings, $prefix = '')
{
/* (1)与えられた配列の各要素について見ていく */
foreach ($settings as $key => $value) {
$key = empty($prefix) ? $key : $prefix . $key;
if (is_scalar($value)) {
ini_set($key, $value); //(2)
} elseif (is_array($value)) {
$this->setPhpSettings($value, $key . '.'); //(3)
}
}
}
...
}
ここでは、(1)まず大きなループで与えられた配列の各要素を見ていきます。もし値が(2)配列でないのなら、そのままPHPの「ini_set関数」を呼び出してPHPの環境を設定し、もし(3)配列だったら再帰的に自分自身を呼び出します。
おわりに
今回はPHP 5.1系が稼動している環境で、新しいZend Frameworkの機能であるプロジェクトの自動作成機能を利用したプロジェクトを使用する方法について説明しました。新しい機能を活用したり、新しい環境への移行を睨みつつ、古い環境でアプリケーションを運用する際のヒントになると思います。
この記事は参考になりましたか?
既に会員の方はを行ってください。
- この記事の著者
-
山田 祥寛(ヤマダ ヨシヒロ)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるLaravel実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
WINGSプロジェクト 風田 伸之(カゼタ ノブユキ)
<WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。 2026年時点での登録メンバは約50名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書、記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア

