例
ブートストラップ・クラスそのものは、一般的にかなりごく小さいものです;
しばしば、それは基底ブートストラップ・クラスを拡張している中身がない単純なスタブです:
対応する構成ファイルを伴います:
; APPLICATION_PATH/configs/application.ini
[production]
autoloaderNamespaces[] = "My_"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
pluginpaths.My_Bootstrap_Resource = "My/Bootstrap/Resource"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
[testing : production]
[development : production]
Note: Autoloader namespaces
Because these examples use custom code, we need to register the namespace prefixes for
that code with our configuration; this is done with the
autoloaderNamespaces configuration key, which is an array.
Additionally, to ensure that custom plugin resources are discovered, we need to register
a plugin prefix path with the bootstrap. This is done with the pluginpaths
configuration key, which is an associative array, with keys denoting the prefix to use,
and values denoting the path related to that prefix.
しかし、カスタマイズした初期化が必要ならば、2つの選択肢ががあります。
最初に、ブートストラップに個別のコードを指定するために
_initで前に置かれるメソッドを書くことができます。
これらのメソッドは bootstrap()によって呼ばれて、
まるでそれらが public メソッドであるように呼ばれることもできます:
bootstrap<resource>()
それらは、任意のオプション配列を受け取るべきです。
リソース・メソッドが値を返すならば、それはブートストラップでコンテナに保存されます。
異なるリソースが相互に作用する必要があるとき、
(例えば、別のリソースにそれ自体を注入している1つのリソース)
これは役に立つことがあります。
その場合、メソッド getResource()は、
それらの値を取得するために使うことができます。
下記の例では、リクエスト・オブジェクトを初期化するためのリソース・メソッドを示します。
それは、トラッキング(フロントコントローラ・リソースに依存します)、
ブートストラップからのリソース取得、
ブートストラップに保存する値の返却することの依存性を利用します。
span style="color: #808080; font-style: italic;">// フロントコントローラ・インスタンスが存在することを確認して、取り込みます。
$this->bootstrap('FrontController');
$front = $this->getResource('FrontController');
// リクエストオブジェクトの初期化
'/foo');
// フロントコントローラに追加
$front->setRequest($request);
// この値をブートストラップでコンテナの 'request' キーに保存します。
この例で、 bootstrap()を呼び出すことに注意してください;
フロントコントローラがこのメソッドを呼ぶ前に初期化されることを確実にします。
その呼び出しは、クラスのリソースまたは別のメソッドいずれかの引き金となるかもしれません。
リソース・プラグインは、特定の初期化を実行するオブジェクトで、
それは指定されるかもしれません:
呼出し元とオプションを注入でき、
init()メソッドをもつことを
簡単に明確にする
Zend_Application_Resource_ResourceAbstractを
リソース・プラグインでは実装します。
例えば、カスタマイズした "View" ブートストラップ・リソースは、
以下のように見えるかもしれません:
span style="color: #ff0000;">'XHTML1_STRICT');
$view->headTitle()->setSeparator(' - ''My Site''Content-Type',
'text/html; charset=utf-8''parseOnLoad''/js/dojo/dojo.js')
->registerModulePath('../spindle', 'spindle')
->addStylesheetModule('spindle.themes.spindle''spindle.main''ViewRenderer'
これを使うようにブートストラップに命じるために、
リソースプラグインのクラス名か、
またはプラグイン・ローダ・プレフィックス・パスと
リソースプラグインの短い名前(例えば "view" )の組み合わせを
提供する必要があるでしょう:
span style="color: #ff0000;">'resources''My_Bootstrap_Resource_View'// 完全クラス名;
'view'// または短い名前
'FrontController''controllerDirectory''/controllers',
),
),
// 短い名前のためにプラグインパスを定義します:
'pluginPaths = array(
'' => 'My/Bootstrap/Resource',
)
)
);
リソースは、親ブートストラップにアクセスすることによって、
他のリソースとイニシャライザを呼び出すことができます:
span style="color: #808080; font-style: italic;">// ビューが初期化されたか確認
$this->getBootstrap()->bootstrap('view');
// ビューオブジェクトを取得:
$view = $this->getBootstrap()->getResource('view');
// ...
}
}
通常の使用法では、アプリケーションをインスタンス化して、
起動して実行するでしょう:
カスタマイズしたスクリプトについては、
特定のリソースを単純に初期化する必要があるかもしれません:
span style="color: #ff0000;">'db''Foo'); // データベースの利用
内部のメソッドまたはリソースを呼び出す
bootstrap()メソッドを使用する代わりに、
オーバーローディングも使うかもしれません: