1 <?xml version="1.0" encoding="UTF-8"?>
3 <!-- EN-Revision: 20763 -->
4 <sect1 id="zend.application.examples">
8 ブートストラップ・クラスそのものは、一般的にかなりごく小さいものです;
9 しばしば、それは基底ブートストラップ・クラスを拡張している中身がない単純なスタブです:
12 <programlisting language="php"><![CDATA[
13 class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
22 <programlisting language="ini"><![CDATA[
23 ; APPLICATION_PATH/configs/application.ini
25 bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
26 bootstrap.class = "Bootstrap"
27 resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
29 [testing : production]
30 [development : production]
34 しかし、カスタマイズした初期化が必要ならば、2つの選択肢ががあります。
35 最初に、ブートストラップに個別のコードを指定するために
36 <emphasis>_init</emphasis>で前に置かれるメソッドを書くことができます。
37 これらのメソッドは<methodname>bootstrap()</methodname>によって呼ばれて、
38 まるでそれらが public メソッドであるように呼ばれることもできます:
39 <emphasis>bootstrap<resource>()</emphasis>
40 それらは、任意のオプション配列を受け取るべきです。
44 リソース・メソッドが値を返すならば、それはブートストラップでコンテナに保存されます。
45 異なるリソースが相互に作用する必要があるとき、
46 (例えば、別のリソースにそれ自体を注入している1つのリソース)
48 その場合、メソッド<methodname>getResource()</methodname>は、
49 それらの値を取得するために使うことができます。
53 下記の例では、リクエスト・オブジェクトを初期化するためのリソース・メソッドを示します。
54 それは、トラッキング(フロントコントローラ・リソースに依存します)、
56 ブートストラップに保存する値の返却することの依存性を利用します。
59 <programlisting language="php"><![CDATA[
60 class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
62 protected function _initRequest()
64 // フロントコントローラ・インスタンスが存在することを確認して、取り込みます。
65 $this->bootstrap('FrontController');
66 $front = $this->getResource('FrontController');
69 $request = new Zend_Controller_Request_Http();
70 $request->setBaseUrl('/foo');
73 $front->setRequest($request);
75 // この値をブートストラップでコンテナの 'request' キーに保存します。
82 この例で、<methodname>bootstrap()</methodname>を呼び出すことに注意してください;
83 フロントコントローラがこのメソッドを呼ぶ前に初期化されることを確実にします。
84 その呼び出しは、クラスのリソースまたは別のメソッドいずれかの引き金となるかもしれません。
88 リソース・プラグインは、特定の初期化を実行するオブジェクトで、
95 <classname>Zend_Application</classname>オブジェクトが初期化されるとき
107 メソッド呼び出しを介してそれらをブートストラップ・オブジェクトで明示的に使用可能にすることによって
114 <methodname>init()</methodname>メソッドをもつことを
116 <classname>Zend_Application_Resource_ResourceAbstract</classname>を
118 例えば、カスタマイズした "View" ブートストラップ・リソースは、
122 <programlisting language="php"><![CDATA[
123 class My_Bootstrap_Resource_View
124 extends Zend_Application_Resource_ResourceAbstract
126 public function init()
128 $view = new Zend_View($this->getOptions());
129 Zend_Dojo::enableView($view);
131 $view->doctype('XHTML1_STRICT');
132 $view->headTitle()->setSeparator(' - ')->append('My Site');
133 $view->headMeta()->appendHttpEquiv('Content-Type',
134 'text/html; charset=utf-8');
136 $view->dojo()->setDjConfigOption('parseOnLoad', true)
137 ->setLocalPath('/js/dojo/dojo.js')
138 ->registerModulePath('../spindle', 'spindle')
139 ->addStylesheetModule('spindle.themes.spindle')
140 ->requireModule('spindle.main')
143 $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
146 $viewRenderer->setView($view);
154 これを使うようにブートストラップに命じるために、
156 またはプラグイン・ローダ・プレフィックス・パスと
157 リソースプラグインの短い名前(例えば "view" )の組み合わせを
161 <programlisting language="php"><![CDATA[
162 $application = new Zend_Application(
165 'resources' => array(
166 'My_Bootstrap_Resource_View' => array(), // 完全クラス名;
167 'view' => array(), // または短い名前
169 'FrontController' => array(
170 'controllerDirectory' => APPLICATION_PATH . '/controllers',
174 // 短い名前のためにプラグインパスを定義します:
175 'pluginPaths = array(
176 'My_Bootstrap_Resource' => 'My/Bootstrap/Resource',
183 リソースは、親ブートストラップにアクセスすることによって、
184 他のリソースとイニシャライザを呼び出すことができます:
187 <programlisting language="php"><![CDATA[
188 class My_Bootstrap_Resource_Layout
189 extends Zend_Application_Resource_ResourceAbstract
191 public function init()
194 $this->getBootstrap()->bootstrap('view');
197 $view = $this->getBootstrap()->getResource('view');
205 通常の使用法では、アプリケーションをインスタンス化して、
209 <programlisting language="php"><![CDATA[
210 $application = new Zend_Application(...);
211 $application->bootstrap()
217 特定のリソースを単純に初期化する必要があるかもしれません:
220 <programlisting language="php"><![CDATA[
221 $application = new Zend_Application(...);
222 $application->getBootstrap()->bootstrap('db');
224 $service = new Zend_XmlRpc_Server();
225 $service->setClass('Foo'); // データベースの利用
226 echo $service->handle();
231 <methodname>bootstrap()</methodname>メソッドを使用する代わりに、
232 オーバーローディングも使うかもしれません:
235 <programlisting language="php"><![CDATA[
236 $application = new Zend_Application(...);
237 $application->getBootstrap()->bootstrapDb();