CodeZine(コードジン)

特集ページ一覧

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

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

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

アプリケーションの設定ファイル

 application.iniはINI形式のファイルで、アプリケーションに関する設定が記述されています。標準では4つのセクションがあります(リスト5)。少し前にも述べましたが、Zend_Applicationに渡す引数によって、設定のどの部分を利用するかを指定することができます。

 ここでは、最初にproductionセクションが宣言されていて、それを拡張したセクションがその後に3つ宣言されています。後の3つのセクションは[(セクション名) : (親セクション名)]という形で宣言されていますが、これは「親セクション」の内容を引き継ぎつつ設定の一部を上書きした、「セクション」を宣言している、という表記になっています。

[リスト5]Webアプリケーションの設定(application.ini)
[production]                                           procuctionセクション開始
phpSettings.display_startup_errors = 0                 PHPの設定: PHPの立ち上げ時のエラーは表示しない
phpSettings.display_errors = 0                         PHPの設定: エラーを画面に出力しない
includePaths.library = APPLICATION_PATH "/../library"  自動クラスローディング用のパスの設定
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"  //……(1)ブートストラップクラスの指定
bootstrap.class = "Bootstrap"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"  //……(2)

[staging : production]
...

[testing : production]
...

[development : production]
phpSettings.display_startup_errors = 1                 PHPの設定: PHPの立ち上げ時のエラーを表示する(設定の上書き)
phpSettings.display_errors = 1                         PHPの設定: エラーを画面に出力する(設定の上書き)

 このうち、(1)と(2)はどちらもブートストラップに関係する記述です。上でも述べたとおり、リソースを作成する段階がブートストラップです。このブートストラップでは、直接作成したいリソースについて記述する方法と、リソースプラグインを利用してリソースを作成する方法と2つあります。

 (1)は、直接リソースを作成するための方法についての設定で、リソースを作成するクラス(ブートストラップクラス)が記述されたファイル名(ここでは「C:\codezine\application\Bootstrap.php」)を指定しています。

 (2)は、リソースプラグインを利用するための設定です。リソースプラグインはリソースを自動的に作成してくれるプラグインです。(2)で利用しているリソースプラグインは、フロントコントローラを作成するためのもので、ここではアクションコントローラが格納されているディレクトリを「C:\codezine\application\controllers」に設定しています。

ブートストラップクラス

 ブートストラップクラスが記述されているBootstrap.phpは自動的に生成されるファイルで、標準では空のクラスのBootstrapクラスだけが記述されています。ここでは「_initView」メソッドを追加して、描画を担当するZend_Viewをここで作成するように変更します(リスト6)。

[リスト6]MVCの各モデルの構築(Bootstrap.php)
<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
}

 ▼

<?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    //次のメソッドを追加
    protected function _initView()
    {
        // (1)ビューを作成し、設定する
        $view = new Zend_View();

        // (2)タイトルまわりの設定
        $view->headTitle('Codezine', 'PREPEND'); //タイトルの先頭に文字列「Codezine」を追加する
        $view->headTitle()->setSeparator(' -- '); //タイトルに含まれる要素を区切る文字列に「 -- 」を指定する

        // (3)ビューレンダラーに渡す
        $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
            'ViewRenderer'
        );
        $viewRenderer->setView($view);

        // (4)作成したビューを返す
        return $view;
    }
}

 ここで追加しているのは_initViewメソッドです。中では、

  • Zend_Viewクラスのインスタンスを作成(リスト6の(1))
  • タイトルなどの設定を実行(リスト6の(2))
  • それが実際の描画を行うようにビューレンダラーに登録(リスト6の(3))
  • 作成したZend_Viewのインスタンスを返す(リスト6の(4))

 を実行しています。

 この_initViewメソッドはリスト3の(2)でZend_Applicationクラスのbootstrapメソッドが実行されるタイミングで呼び出されます。

 なお、ここでは_initViewというメソッドを追加しましたが、ブートストラップクラスでは_initから始まるメソッドはすべてリソースを生成するためのメソッドとして扱われます。そのため必要に応じて_initModelなどのメソッドを追加して、リソースの作成を行うことができます。

 なお、今回のようにZend_Applicationのbootstrapメソッドを、引数なしで呼び出すとすべてのリソースプラグインや_init~メソッドが呼び出されます。特定のリソースだけを作成したい場合には、bootstrapメソッドに作成したいリソースの文字列(もし複数の場合にはそれらの配列)を引数として渡すことで、指定したリソースのみの作成を行うことができます。


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

修正履歴

  • 2009/10/18 21:30 必要な環境の「PHP5.1.4以降」を「PHP5.2.4以降」に修正しました(Zend Framework 1.8以降に必要).

バックナンバー

連載:Zend Framework入門

もっと読む

著者プロフィール

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

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

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

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

あなたにオススメ

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