SHOEISHA iD

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

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

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

Zend Framework入門

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

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


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

 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メソッドに作成したいリソースの文字列(もし複数の場合にはそれらの配列)を引数として渡すことで、指定したリソースのみの作成を行うことができます。

次のページ
おわりに

修正履歴

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

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/4253 2009/10/18 21:30

イベント

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

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

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

メールバックナンバー