例
ブートストラップ・クラスそのものは、一般的にかなりごく小さいものです;
しばしば、それは基底ブートストラップ・クラスを拡張している中身がない単純なスタブです:
対応する構成ファイルを伴います:
しかし、カスタマイズした初期化が必要ならば、2つの選択肢ががあります。
最初に、ブートストラップに個別のコードを指定するために
_initで前に置かれるメソッドを書くことができます。
これらのメソッドはbootstrap()によって呼ばれて、
まるでそれらが public メソッドであるように呼ばれることもできます:
bootstrap<resource>()
それらは、任意のオプション配列を受け取るべきです。
リソース・メソッドが値を返すならば、それはブートストラップでコンテナに保存されます。
異なるリソースが相互に作用する必要があるとき、
(例えば、別のリソースにそれ自体を注入している1つのリソース)
これは役に立つことがあります。
その場合、メソッドgetResource()は、
それらの値を取得するために使うことができます。
下記の例では、リクエスト・オブジェクトを初期化するためのリソース・メソッドを示します。
それは、トラッキング(フロントコントローラ・リソースに依存します)、
ブートストラップからのリソース取得、
ブートストラップに保存する値の返却することの依存性を利用します。
bootstrap('FrontController');
$front = $this->getResource('FrontController');
// リクエストオブジェクトの初期化
$request = new Zend_Controller_Request_Http();
$request->setBaseUrl('/foo');
// フロントコントローラに追加
$front->setRequest($request);
// この値をブートストラップでコンテナの 'request' キーに保存します。
return $request;
}
}
]]>
この例で、bootstrap()を呼び出すことに注意してください;
フロントコントローラがこのメソッドを呼ぶ前に初期化されることを確実にします。
その呼び出しは、クラスのリソースまたは別のメソッドいずれかの引き金となるかもしれません。
リソース・プラグインは、特定の初期化を実行するオブジェクトで、
それは指定されるかもしれません:
Zend_Applicationオブジェクトが初期化されるとき
ブートストラップオブジェクトの初期化中
メソッド呼び出しを介してそれらをブートストラップ・オブジェクトで明示的に使用可能にすることによって
呼出し元とオプションを注入でき、
init()メソッドをもつことを
簡単に明確にする
Zend_Application_Resource_ResourceAbstractを
リソース・プラグインでは実装します。
例えば、カスタマイズした "View" ブートストラップ・リソースは、
以下のように見えるかもしれません:
getOptions());
Zend_Dojo::enableView($view);
$view->doctype('XHTML1_STRICT');
$view->headTitle()->setSeparator(' - ')->append('My Site');
$view->headMeta()->appendHttpEquiv('Content-Type',
'text/html; charset=utf-8');
$view->dojo()->setDjConfigOption('parseOnLoad', true)
->setLocalPath('/js/dojo/dojo.js')
->registerModulePath('../spindle', 'spindle')
->addStylesheetModule('spindle.themes.spindle')
->requireModule('spindle.main')
->disable();
$viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
'ViewRenderer'
);
$viewRenderer->setView($view);
return $view;
}
}
]]>
これを使うようにブートストラップに命じるために、
リソースプラグインのクラス名か、
またはプラグイン・ローダ・プレフィックス・パスと
リソースプラグインの短い名前(例えば "view" )の組み合わせを
提供する必要があるでしょう:
array(
'My_Bootstrap_Resource_View' => array(), // 完全クラス名;
'view' => array(), // または短い名前
'FrontController' => array(
'controllerDirectory' => APPLICATION_PATH . '/controllers',
),
),
// 短い名前のためにプラグインパスを定義します:
'pluginPaths = array(
'My_Bootstrap_Resource' => 'My/Bootstrap/Resource',
)
)
);
]]>
リソースは、親ブートストラップにアクセスすることによって、
他のリソースとイニシャライザを呼び出すことができます:
getBootstrap()->bootstrap('view');
// ビューオブジェクトを取得:
$view = $this->getBootstrap()->getResource('view');
// ...
}
}
]]>
通常の使用法では、アプリケーションをインスタンス化して、
起動して実行するでしょう:
bootstrap()
->run();
]]>
カスタマイズしたスクリプトについては、
特定のリソースを単純に初期化する必要があるかもしれません:
getBootstrap()->bootstrap('db');
$service = new Zend_XmlRpc_Server();
$service->setClass('Foo'); // データベースの利用
echo $service->handle();
]]>
内部のメソッドまたはリソースを呼び出す
bootstrap()メソッドを使用する代わりに、
オーバーローディングも使うかもしれません:
getBootstrap()->bootstrapDb();
]]>