アプリケーションの設定ファイル
application.iniはINI形式のファイルで、アプリケーションに関する設定が記述されています。標準では4つのセクションがあります(リスト5)。少し前にも述べましたが、Zend_Applicationに渡す引数によって、設定のどの部分を利用するかを指定することができます。
ここでは、最初にproductionセクションが宣言されていて、それを拡張したセクションがその後に3つ宣言されています。後の3つのセクションは[(セクション名) : (親セクション名)]という形で宣言されていますが、これは「親セクション」の内容を引き継ぎつつ設定の一部を上書きした、「セクション」を宣言している、という表記になっています。
[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)。
<?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メソッドに作成したいリソースの文字列(もし複数の場合にはそれらの配列)を引数として渡すことで、指定したリソースのみの作成を行うことができます。
