Zend_Application-QuickStart.xml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <!-- EN-Revision: 17372 -->
  4. <sect1 id="zend.application.quick-start">
  5. <title>Zend_Application クイックスタート</title>
  6. <para>
  7. <classname>Zend_Application</classname>で始める方法は2つあります、
  8. そして、それらはプロジェクトを始める方法によって決まります。
  9. いずれにせよ、どの場合も、<classname>Bootstrap</classname>クラスと関連する
  10. 構成ファイルを作成することから始めます。
  11. </para>
  12. <para>
  13. プロジェクトを作成するために<classname>Zend_Tool</classname>を使う予定なら、
  14. 引き続き、下記をご覧下さい。
  15. <classname>Zend_Application</classname>を既存のプロジェクトに追加するなら、
  16. <link linkend="zend.application.quick-start.manual">読み飛ばして先に進み</link>たいことでしょう。
  17. </para>
  18. <sect2 id="zend.application.quick-start.zend-tool">
  19. <title>Zend_Toolの利用</title>
  20. <para>
  21. <classname>Zend_Application</classname>を使い始めるために最も早い方法は、
  22. プロジェクトを生成するために<classname>Zend_Tool</classname>を使うことです。
  23. これにより、<classname>Bootstrap</classname>クラスやファイルも生成されます。
  24. </para>
  25. <para>
  26. プロジェクトを作成するために、(*nix システムで)<command>zf</command>コマンドを実行してください:
  27. </para>
  28. <programlisting language="sh"><![CDATA[
  29. % zf create project newproject
  30. ]]></programlisting>
  31. <para>
  32. またはWindowsの<filename>zf.bat</filename>コマンド:
  33. </para>
  34. <programlisting language="dos"><![CDATA[
  35. C:> zf.bat create project newproject
  36. ]]></programlisting>
  37. <para>
  38. 共に、下記のようなプロジェクト構造を作成します:
  39. </para>
  40. <programlisting language="text"><![CDATA[
  41. newproject
  42. |-- application
  43. | |-- Bootstrap.php
  44. | |-- configs
  45. | | `-- application.ini
  46. | |-- controllers
  47. | | |-- ErrorController.php
  48. | | `-- IndexController.php
  49. | |-- models
  50. | `-- views
  51. | |-- helpers
  52. | `-- scripts
  53. | |-- error
  54. | | `-- error.phtml
  55. | `-- index
  56. | `-- index.phtml
  57. |-- library
  58. |-- public
  59. | `-- index.php
  60. `-- tests
  61. |-- application
  62. | `-- bootstrap.php
  63. |-- library
  64. | `-- bootstrap.php
  65. `-- phpunit.xml
  66. ]]></programlisting>
  67. <para>
  68. 上記の図の中で、ブートストラップは<filename>newproject/application/Bootstrap.php</filename>にあり、
  69. 最初は以下のように見えます:
  70. </para>
  71. <programlisting language="php"><![CDATA[
  72. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  73. {
  74. }
  75. ]]></programlisting>
  76. <para>
  77. 構成ファイル、<filename>newproject/application/configs/application.ini</filename>にも気付くでしょう。
  78. それは下記のような内容です:
  79. </para>
  80. <programlisting language="dosini"><![CDATA[
  81. [production]
  82. phpSettings.display_startup_errors = 0
  83. phpSettings.display_errors = 0
  84. includePaths.library = APPLICATION_PATH "/../library"
  85. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  86. bootstrap.class = "Bootstrap"
  87. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
  88. [staging : production]
  89. [testing : production]
  90. phpSettings.display_startup_errors = 1
  91. phpSettings.display_errors = 1
  92. [development : production]
  93. phpSettings.display_startup_errors = 1
  94. phpSettings.display_errors = 1
  95. ]]></programlisting>
  96. <para>
  97. この構成ファイルの設定は全て、
  98. <classname>Zend_Application</classname>及びブートストラップで利用するためのものです。
  99. </para>
  100. <para>
  101. 他に興味を惹くファイルは
  102. <filename>newproject/public/index.php</filename>で、
  103. それは<classname>Zend_Application</classname>を呼び出してディスパッチします。
  104. </para>
  105. <programlisting language="php"><![CDATA[
  106. // アプリケーション・ディレクトリへのパスを定義します
  107. defined('APPLICATION_PATH')
  108. || define('APPLICATION_PATH',
  109. realpath(dirname(__FILE__) . '/../application'));
  110. // アプリケーション環境を定義します
  111. defined('APPLICATION_ENV')
  112. || define('APPLICATION_ENV',
  113. (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
  114. : 'production'));
  115. /** Zend_Application */
  116. require_once 'Zend/Application.php';
  117. // アプリケーション及びブートストラップを作成して、実行します
  118. $application = new Zend_Application(
  119. APPLICATION_ENV,
  120. APPLICATION_PATH . '/configs/application.ini'
  121. );
  122. $application->bootstrap()
  123. ->run();
  124. ]]></programlisting>
  125. <para>
  126. クイックスタートを続けるには、
  127. <link
  128. linkend="zend.application.quick-start.resources">リソース節まで読み飛ばし</link>てください。
  129. </para>
  130. </sect2>
  131. <sect2 id="zend.application.quick-start.manual">
  132. <title>アプリケーションにZend_Applicationを追加する</title>
  133. <para>
  134. <classname>Zend_Application</classname>の基本は本当に単純です:
  135. </para>
  136. <itemizedlist>
  137. <listitem><para>
  138. <classname>Bootstrap</classname>クラスを持つ
  139. <filename>application/Bootstrap.php</filename>ファイルを作成します。
  140. </para></listitem>
  141. <listitem><para>
  142. <classname>Zend_Application</classname>に必要な基本的な設定を持つ構成ファイル、
  143. <filename>application/configs/application.ini</filename>を作成します。
  144. </para></listitem>
  145. <listitem><para>
  146. <classname>Zend_Application</classname>を利用するために、
  147. <filename>public/index.php</filename>を変更します。
  148. </para></listitem>
  149. </itemizedlist>
  150. <para>
  151. 初めに、<classname>Bootstrap</classname>クラスを作成します。
  152. <filename>application/Bootstrap.php</filename>ファイルを下記の内容で作成します。
  153. </para>
  154. <programlisting language="php"><![CDATA[
  155. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  156. {
  157. }
  158. ]]></programlisting>
  159. <para>
  160. 次に、構成を作成します。
  161. このチュートリアルでは<acronym>INI</acronym>形式の構成を使います;
  162. もちろん、<acronym>XML</acronym>や<acronym>PHP</acronym>構成ファイルも同様に利用できます。
  163. <filename>application/configs/application.ini</filename>ファイルを作成して、
  164. 下記の内容にしてください:
  165. </para>
  166. <programlisting language="dosini"><![CDATA[
  167. [production]
  168. phpSettings.display_startup_errors = 0
  169. phpSettings.display_errors = 0
  170. includePaths.library = APPLICATION_PATH "/../library"
  171. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  172. bootstrap.class = "Bootstrap"
  173. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
  174. [staging : production]
  175. [testing : production]
  176. phpSettings.display_startup_errors = 1
  177. phpSettings.display_errors = 1
  178. [development : production]
  179. phpSettings.display_startup_errors = 1
  180. phpSettings.display_errors = 1
  181. ]]></programlisting>
  182. <para>
  183. 次に入り口となるスクリプト、<filename>public/index.php</filename>を変更しましょう。
  184. もしファイルが存在しなければ、作成してください;
  185. さもなければ、下記の内容でファイルを置き換えてください:
  186. </para>
  187. <programlisting language="php"><![CDATA[
  188. // アプリケーション・ディレクトリへのパスを定義します
  189. defined('APPLICATION_PATH')
  190. || define('APPLICATION_PATH',
  191. realpath(dirname(__FILE__) . '/../application'));
  192. // アプリケーション環境を定義します
  193. defined('APPLICATION_ENV')
  194. || define('APPLICATION_ENV',
  195. (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
  196. : 'production'));
  197. // 一般的に、library/ ディレクトリーをinclude_pathに追加したいでしょう
  198. // 特にそれがインストールしたZFを含むならば
  199. set_include_path(implode(PATH_SEPARATOR, array(
  200. dirname(dirname(__FILE__)) . '/library',
  201. get_include_path(),
  202. )));
  203. /** Zend_Application */
  204. require_once 'Zend/Application.php';
  205. // アプリケーション及びブートストラップを作成して、実行します
  206. $application = new Zend_Application(
  207. APPLICATION_ENV,
  208. APPLICATION_PATH . '/configs/application.ini'
  209. );
  210. $application->bootstrap()
  211. ->run();
  212. ]]></programlisting>
  213. <para>
  214. アプリケーション環境定数が環境変数 "APPLICATION_ENV" を探すことに気づくかもしれません。
  215. 我々は、これをウェブサーバ環境で設定することを勧めます。
  216. Apacheでは、vhost定義、または、<filename>.htaccess</filename>ファイルのいずれかで設定できます。
  217. 我々は、<filename>public/.htaccess</filename>ファイルとして以下の内容を推奨します:
  218. </para>
  219. <programlisting language="conf"><![CDATA[
  220. SetEnv APPLICATION_ENV development
  221. RewriteEngine On
  222. RewriteCond %{REQUEST_FILENAME} -s [OR]
  223. RewriteCond %{REQUEST_FILENAME} -l [OR]
  224. RewriteCond %{REQUEST_FILENAME} -d
  225. RewriteRule ^.*$ - [NC,L]
  226. RewriteRule ^.*$ index.php [NC,L]
  227. ]]></programlisting>
  228. <note>
  229. <title>mod_rewriteについて学ぶ</title>
  230. <para>
  231. 上記の書き換えルールでは、バーチャル・ホスト・ドキュメント・ルートの配下の
  232. どのファイルでもアクセスが許可されます。
  233. このように公開されたくないファイルがあるならば、より限定的なルールにしたいかもしれません。
  234. <ulink
  235. url="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">mod_rewriteについてより学ぶ</ulink>
  236. ためにはApache ウェブサイトを訪れてください。
  237. </para>
  238. </note>
  239. <para>
  240. ここまでで、
  241. <classname>Zend_Application</classname>をすっかり利用し始められるようになっています。
  242. </para>
  243. </sect2>
  244. <sect2 id="zend.application.quick-start.resources">
  245. <title>リソースの追加と作成</title>
  246. <para>
  247. 上記の手引きに従うと、ブートストラップ・クラスはフロントコントローラを利用します。
  248. そして、それが動くとき、フロントコントローラをディスパッチします。
  249. しかし、おそらく、これより少し多くの構成を必要とするでしょう。
  250. </para>
  251. <para>
  252. この節では、アプリケーションにリソースを2つ追加することに目を向けましょう。
  253. 最初に、レイアウトを準備して、ビュー・オブジェクトをカスタマイズします。
  254. </para>
  255. <para>
  256. <classname>Zend_Application</classname>で提供される標準的なリソースのうちの1つは、
  257. 「レイアウト」リソースです。
  258. このリソースでは、<classname>Zend_Layout</classname>インスタンスを構成するために使う構成値を
  259. あなたが定義することをあてにしています。
  260. </para>
  261. <para>
  262. これを使うためにすべきことは、構成ファイルを更新することです。
  263. </para>
  264. <programlisting language="dosini"><![CDATA[
  265. [production]
  266. phpSettings.display_startup_errors = 0
  267. phpSettings.display_errors = 0
  268. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  269. bootstrap.class = "Bootstrap"
  270. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
  271. ; ADD THE FOLLOWING LINES
  272. resources.layout.layout = "layout"
  273. resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
  274. [staging : production]
  275. [testing : production]
  276. phpSettings.display_startup_errors = 1
  277. phpSettings.display_errors = 1
  278. [development : production]
  279. phpSettings.display_startup_errors = 1
  280. phpSettings.display_errors = 1
  281. ]]></programlisting>
  282. <para>
  283. もしまだ無ければ、
  284. <filename>application/layouts/scripts/</filename>ディレクトリ、
  285. 及びそのディレクトリ内に<filename>layout.phtml</filename>ファイルを作成してください。
  286. 以下の通りで、レイアウトを良く始められます。
  287. (そして、それは次に含まれるビュー・リソースと結びつきます):
  288. </para>
  289. <programlisting language="php"><![CDATA[
  290. <?php echo $this->doctype() ?>
  291. <html>
  292. <head>
  293. <?php echo $this->headTitle() ?>
  294. <?php echo $this->headLink() ?>
  295. <?php echo $this->headStyle() ?>
  296. <?php echo $this->headScript() ?>
  297. </head>
  298. <body>
  299. <?php echo $this->layout()->content ?>
  300. </body>
  301. </html>
  302. ]]></programlisting>
  303. <para>
  304. ここまでで、レイアウトを役立てられるようになっています。
  305. </para>
  306. <para>
  307. 次に、カスタム・ビューリソースを追加します。
  308. ビューを初期化する際に、
  309. <acronym>HTML</acronym> DocType及び
  310. <acronym>HTML</acronym>の head で使用するタイトルのデフォルト値を設定を希望します。
  311. これは、メソッドを追加する<classname>Bootstrap</classname>クラスを編集することにより成就できます:
  312. </para>
  313. <programlisting language="php"><![CDATA[
  314. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  315. {
  316. protected function _initView()
  317. {
  318. // ビューを初期化します
  319. $view = new Zend_View();
  320. $view->doctype('XHTML1_STRICT');
  321. $view->headTitle('My First Zend Framework Application');
  322. // それを ViewRenderer に追加します
  323. $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
  324. 'ViewRenderer'
  325. );
  326. $viewRenderer->setView($view);
  327. // ブートストラップで保存できるように返します
  328. return $view;
  329. }
  330. }
  331. ]]></programlisting>
  332. <para>
  333. このメソッドはアプリケーションを起動する際に自動的に実行されて、
  334. アプリケーションの必要性に従ってビューが初期化されることを確実にします。
  335. </para>
  336. </sect2>
  337. <sect2 id="zend.application.quick-start.next-steps">
  338. <title>Zend_Applicationを使った次のステップ</title>
  339. <para>
  340. 上記は、<classname>Zend_Application</classname>で始めるようにさせるべきです。
  341. そして、アプリケーション・ブートストラップを作成しだすべきです。
  342. ここから、リソース・メソッドや、再利用性を最大にするために、リソース・プラグイン・クラスを作成し始めるべきです。
  343. より学ぶために、引き続きご覧下さい!
  344. </para>
  345. </sect2>
  346. </sect1>