SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Zend Framework入門

RADツールによるPHPアプリケーション速効開発
- Zend_Application -

Zend Frameworkによる実践的なPHPアプリケーション開発 24


Zend_Applicationの設定

 ここではアプリケーション全体や、ブートストラップに関する設定を行う方法について見ていきます。通常はこれは設定ファイル(application.ini)に記述していきます。

設定ファイルの与え方

 設定ファイルの書き方を見る前に、どの設定ファイルをどのように使うかを指定する方法について見ていきます。これらはリスト2~3を見て分かるとおり、Zend_Applicationのコンストラクタで指定しています。では、ここで利用している定数APPLICATION_ENVAPPLICATION_PATHはどこで設定し、どのような意味を持つ定数なのでしょうか?

 APPLICATION_ENVとAPPLICATION_PATHはアプリケーションの管理を補助するための定数で、開発の段階やファイルの置いてある場所を指定しています(というわけで、これらZend_Applicationを利用するために絶対的に必要なものではないです)。

設定のための定数
定数名 説明 標準の値 設定する場所
APPLICATION_PATH アプリケーションのファイルが設置されているディレクトリ 「index.php」が置かれているディレクトリと親ディレクトリが共通な「application」という名前のディレクトリ (明示的に指定せず、index.phpで自動的に判別)
APPLICATION_ENV 設定ファイルのどの部分を利用するか 「development」 「.htaccess」

 APPLICATION_PATHは設定ファイルを含む、アプリケーションに関係するファイルが設定されているディレクトリを指定するためのものです。明示的に指定しなければ「index.php」が設置されているディレクトリから自動的に推定してくれます。

 APPLICATION_ENVには、アプリケーションを動かしている環境(例えば「開発中=development」「実運用=production」等)を指定します。APPLICATION_ENVは通常はApacheの環境変数「APPLICATION_ENV」を経由して、「.htaccess」ファイルで

SetEnv APPLICATION_ENV development

のように指定します。

 このAPPLICATION_ENVに応じて設定ファイルのどの部分が利用されるかも変化するので、開発・運用の段階に応じた設定の変更を変数の指定一つで変更することができます。

設定ファイルの中身

 Zend_Applicationの設定は通常は設定ファイルに記述し、その設定ファイルをZend_Applicationのコンストラクタの2番目の引数として渡します。まず、標準の設定ファイルを見てみましょう(リスト4)。

[リスト4]標準の設定ファイル(applcation.ini)
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

 このapplication.iniは「production」「staging」「testing」「development」の4つのセクションがある、INI形式のファイルです。このうちの、どのセクションを利用するかは先程述べたアプリケーションを動かしている環境で指定します。現在指定されている環境は「development」なので、このファイルのうちの4つ目のセクションの設定が利用されます。

 なお、この4つ目のセクションは[development : production]という形で宣言されています。これは「production(親セクション)」の内容を引き継ぎつつ設定の一部を上書きした「development(子セクション)」を宣言しているという表記になっています。つまり、ここで有効となる設定はリスト5のようになります。

[リスト5]developmentの設定
[development]
;(productionから設定を引き継ぎ)
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
;(developmentで設定を上書き)
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

 これらの設定は

 「設定の名前」=「設定の値」

のような書式、ないし階層構造を持つ設定の場合には、

 「設定の名前」.「設定の項目名1」.「設定の項目名2」...「設定の項目名」 = 「設定の値」

のような書式で記述します。

設定ファイルの書式

 Zend_Applicationでは設定ファイルを読み込むのにZend_Configを利用しています。そのため、上の例のようなINI形式のファイルだけでなく、XML形式でも設定を記述することができます。ただし、Zend Frameworkはバージョン1.8系まではXMLファイル内で記述された設定ファイルにPHPの定数を埋め込む方法がなかったため、INI形式を利用するのが普通でした。

 Zend Framework1.9系からは、PHPの定数をXMLで記述した設定ファイルから参照できるようになりました。これには、次のように「http://framework.zend.com/xml/zend-config-xml/1.0/」名前空間の「const」タグを利用します。

[リスト6]INIファイルとXMLファイルの比較
(INIファイル)
[production]
...
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
...
[development : production]
...

 ▼

(XMLファイル)
<?xml version="1.0"?>
<config xmlns:zf="http://framework.zend.com/xml/zend-config-xml/1.0/">
<configdata>
  <production>
    <resources>
      <frontController>
        <controllerDirectory>
          <zf:const zf:name="APPLICATION_PATH"/>/controllers</controllerDirectory>
      </frontController>
    </resources>
  </production>
...
  <development zf:extends="production">
  </development>
</configdata>

 それでは、各設定の意味について説明していきます。

設定できる内容

 Zend_Applicationで設定するべき値には大きく分けて、Zend_Application本体で処理するものと、Zend_Application_Bootstrap内で処理するものと2種類あります。

設定の分類
分類 設定の名前 説明
Zend_Application本体 phpSettings php全体の設定
includePaths phpのinclude_pathに追加するディレクトリを指定
autoloaderNamespaces Zend Frameworkのクラス自動ロードで、自動的に読み込むクラスの名前空間を登録
bootstrap ブートストラップクラスの指定
Zend_Application_Bootstrap resources リソースプラグインの設定
set(プロパティ名) (プロパティ名)のプロパティの値を設定
pluginpaths 指定されたプレフィックスに指定されたパスを割り当てる

 Zend_Application本体で処理するものは、アプリケーション全体の処理に関するものが大部分です。このうち「autoloodareNamespaces」はZend Frameworkのクラス自動読み込み機構に関するもので、明示的にrequireしなくても読み込むクラスの名前を指定しています(ちなみに、何も指定していない状態では「Zend_」および「ZendX_」から始まるクラス名が自動読み込みの対象となります)。

 また、bootstrapはブートストラップクラスを指定するためのもので、ブートストラップクラスのクラス名を指定する「class」と、そのクラスが格納されているファイル「path」を指定します。なお、このpathはリスト4にある通り、通常は定数APPLICATION_PATHを利用して宣言します。

 Zend_Application_Bootstrapで処理するものは、主にブートストラップ時に行う処理に関するもので、利用するリソースプラグインやブートストラップクラスのプロパティを指定することができます。また、(Zend Framework標準添付ではなく)追加のプラグインを利用したい場合の、その追加したプラグインが置かれているディレクトリを指定することもできます。

 この中でもよく使うと思われるいくつかについて説明します。

(1)phpSettings

 php.iniに書くような設定を記述します。例えばphp.iniに

display_errors = 0

と記述したい場合に、代わり設定ファイルに

phpSettings.display_errors = 0

と記述することができます。

 内部ではPHPの関数ini_setを呼び出しているため、ini_setで変更できる項目のみ変更できます(詳細に関してはini_setのマニュアルも参照してください)。

(2)bootstrap

 ブートストラップクラスの名前と記述されているファイル名を指定します。この設定はクラスの名前を指定する項目(class)とファイル名を指定する項目(path)の2つの項目を指定する必要があります。

(3)resources

 利用するリソースプラグインに関する設定を行います。設定の書式は

「resources」.「(リソースプラグイン名)」.「項目名」...「項目名」 = 値

のようになります。

 なお、ここで指定されないリソースプラグインは利用されません(つまり、プラグインに関連付けられたリソースも生成されません)。Zend_Applicationクラスのrunメソッドからは、このリソースプラグインを利用して作成されたフロントコントローラーにディスパッチされるので、最低でもフロントコントローラーに関するリソースの設定を行う必要があります。

次のページ
ブートストラップ

修正履歴

この記事は参考になりましたか?

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/4366 2009/10/16 11:54

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー