Zend_Application-QuickStart.xml 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- Reviewed: no -->
  3. <!-- EN-Revision: 24249 -->
  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>
  138. <para>
  139. <classname>Bootstrap</classname>クラスを持つ
  140. <filename>application/Bootstrap.php</filename>ファイルを作成します。
  141. </para>
  142. </listitem>
  143. <listitem>
  144. <para>
  145. <classname>Zend_Application</classname>に必要な基本的な設定を持つ構成ファイル、
  146. <filename>application/configs/application.ini</filename>を作成します。
  147. </para>
  148. </listitem>
  149. <listitem>
  150. <para>
  151. <classname>Zend_Application</classname>を利用するために、
  152. <filename>public/index.php</filename>を変更します。
  153. </para>
  154. </listitem>
  155. </itemizedlist>
  156. <para>
  157. 初めに、<classname>Bootstrap</classname>クラスを作成します。
  158. <filename>application/Bootstrap.php</filename>ファイルを下記の内容で作成します。
  159. </para>
  160. <programlisting language="php"><![CDATA[
  161. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  162. {
  163. }
  164. ]]></programlisting>
  165. <para>
  166. 次に、構成を作成します。
  167. このチュートリアルでは<acronym>INI</acronym>形式の構成を使います;
  168. もちろん、<acronym>XML</acronym>、<acronym>JSON</acronym>、<acronym>YAML</acronym>や
  169. <acronym>PHP</acronym>構成ファイルも同様に利用できます。
  170. <filename>application/configs/application.ini</filename>ファイルを作成して、
  171. 下記の内容にしてください:
  172. </para>
  173. <programlisting language="dosini"><![CDATA[
  174. [production]
  175. phpSettings.display_startup_errors = 0
  176. phpSettings.display_errors = 0
  177. includePaths.library = APPLICATION_PATH "/../library"
  178. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  179. bootstrap.class = "Bootstrap"
  180. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
  181. [staging : production]
  182. [testing : production]
  183. phpSettings.display_startup_errors = 1
  184. phpSettings.display_errors = 1
  185. [development : production]
  186. phpSettings.display_startup_errors = 1
  187. phpSettings.display_errors = 1
  188. ]]></programlisting>
  189. <para>
  190. 次に入り口となるスクリプト、<filename>public/index.php</filename>を変更しましょう。
  191. もしファイルが存在しなければ、作成してください;
  192. さもなければ、下記の内容でファイルを置き換えてください:
  193. </para>
  194. <programlisting language="php"><![CDATA[
  195. // アプリケーション・ディレクトリへのパスを定義します
  196. defined('APPLICATION_PATH')
  197. || define('APPLICATION_PATH',
  198. realpath(dirname(__FILE__) . '/../application'));
  199. // アプリケーション環境を定義します
  200. defined('APPLICATION_ENV')
  201. || define('APPLICATION_ENV',
  202. (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
  203. : 'production'));
  204. // 一般的に、library/ ディレクトリーをinclude_pathに追加したいでしょう
  205. // 特にそれがインストールしたZFを含むならば
  206. set_include_path(implode(PATH_SEPARATOR, array(
  207. dirname(dirname(__FILE__)) . '/library',
  208. get_include_path(),
  209. )));
  210. /** Zend_Application */
  211. require_once 'Zend/Application.php';
  212. // アプリケーション及びブートストラップを作成して、実行します
  213. $application = new Zend_Application(
  214. APPLICATION_ENV,
  215. APPLICATION_PATH . '/configs/application.ini'
  216. );
  217. $application->bootstrap()
  218. ->run();
  219. ]]></programlisting>
  220. <para>
  221. アプリケーション環境定数が環境変数 "APPLICATION_ENV" を探すことに気づくかもしれません。
  222. 我々は、これをウェブサーバ環境で設定することを勧めます。
  223. Apacheでは、vhost定義、または、<filename>.htaccess</filename>ファイルのいずれかで設定できます。
  224. 我々は、<filename>public/.htaccess</filename>ファイルとして以下の内容を推奨します:
  225. </para>
  226. <programlisting language="conf"><![CDATA[
  227. SetEnv APPLICATION_ENV development
  228. RewriteEngine On
  229. RewriteCond %{REQUEST_FILENAME} -s [OR]
  230. RewriteCond %{REQUEST_FILENAME} -l [OR]
  231. RewriteCond %{REQUEST_FILENAME} -d
  232. RewriteRule ^.*$ - [NC,L]
  233. RewriteRule ^.*$ index.php [NC,L]
  234. ]]></programlisting>
  235. <note>
  236. <title>mod_rewriteについて学ぶ</title>
  237. <para>
  238. 上記の書き換えルールでは、バーチャル・ホスト・ドキュメント・ルートの配下の
  239. どのファイルでもアクセスが許可されます。
  240. このように公開されたくないファイルがあるならば、より限定的なルールにしたいかもしれません。
  241. <ulink
  242. url="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">mod_rewriteについてより学ぶ</ulink>
  243. ためにはApache ウェブサイトを訪れてください。
  244. </para>
  245. </note>
  246. <para>
  247. ここまでで、
  248. <classname>Zend_Application</classname>をすっかり利用し始められるようになっています。
  249. </para>
  250. </sect2>
  251. <sect2 id="zend.application.quick-start.resources">
  252. <title>リソースの追加と作成</title>
  253. <para>
  254. 上記の手引きに従うと、ブートストラップ・クラスはフロントコントローラを利用します。
  255. そして、それが動くとき、フロントコントローラをディスパッチします。
  256. しかし、おそらく、これより少し多くの構成を必要とするでしょう。
  257. </para>
  258. <para>
  259. この節では、アプリケーションにリソースを2つ追加することに目を向けましょう。
  260. 最初に、レイアウトを準備して、ビュー・オブジェクトをカスタマイズします。
  261. </para>
  262. <para>
  263. <classname>Zend_Application</classname>で提供される標準的なリソースのうちの1つは、
  264. 「レイアウト」リソースです。
  265. このリソースでは、<classname>Zend_Layout</classname>インスタンスを構成するために使う構成値を
  266. あなたが定義することをあてにしています。
  267. </para>
  268. <para>
  269. これを使うためにすべきことは、構成ファイルを更新することです。
  270. </para>
  271. <programlisting language="dosini"><![CDATA[
  272. [production]
  273. phpSettings.display_startup_errors = 0
  274. phpSettings.display_errors = 0
  275. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  276. bootstrap.class = "Bootstrap"
  277. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
  278. ; ADD THE FOLLOWING LINES
  279. resources.layout.layout = "layout"
  280. resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
  281. [staging : production]
  282. [testing : production]
  283. phpSettings.display_startup_errors = 1
  284. phpSettings.display_errors = 1
  285. [development : production]
  286. phpSettings.display_startup_errors = 1
  287. phpSettings.display_errors = 1
  288. ]]></programlisting>
  289. <para>
  290. もしまだ無ければ、
  291. <filename>application/layouts/scripts/</filename>ディレクトリ、
  292. 及びそのディレクトリ内に<filename>layout.phtml</filename>ファイルを作成してください。
  293. 以下の通りで、レイアウトを良く始められます。
  294. (そして、それは次に含まれるビュー・リソースと結びつきます):
  295. </para>
  296. <programlisting language="php"><![CDATA[
  297. <?php echo $this->doctype() ?>
  298. <html>
  299. <head>
  300. <?php echo $this->headTitle() ?>
  301. <?php echo $this->headLink() ?>
  302. <?php echo $this->headStyle() ?>
  303. <?php echo $this->headScript() ?>
  304. </head>
  305. <body>
  306. <?php echo $this->layout()->content ?>
  307. </body>
  308. </html>
  309. ]]></programlisting>
  310. <para>
  311. ここまでで、レイアウトを役立てられるようになっています。
  312. </para>
  313. <para>
  314. 次に、カスタム・ビューリソースを追加します。
  315. ビューを初期化する際に、
  316. <acronym>HTML</acronym> DocType及び
  317. <acronym>HTML</acronym>の head で使用するタイトルのデフォルト値を設定を希望します。
  318. これは、メソッドを追加する<classname>Bootstrap</classname>クラスを編集することにより成就できます:
  319. </para>
  320. <programlisting language="php"><![CDATA[
  321. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  322. {
  323. protected function _initView()
  324. {
  325. // ビューを初期化します
  326. $view = new Zend_View();
  327. $view->doctype('XHTML1_STRICT');
  328. $view->headTitle('My First Zend Framework Application');
  329. // それを ViewRenderer に追加します
  330. $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
  331. 'ViewRenderer'
  332. );
  333. $viewRenderer->setView($view);
  334. // ブートストラップで保存できるように返します
  335. return $view;
  336. }
  337. }
  338. ]]></programlisting>
  339. <para>
  340. このメソッドはアプリケーションを起動する際に自動的に実行されて、
  341. アプリケーションの必要性に従ってビューが初期化されることを確実にします。
  342. </para>
  343. </sect2>
  344. <sect2 id="zend.application.quick-start.next-steps">
  345. <title>Zend_Applicationを使った次のステップ</title>
  346. <para>
  347. 上記は、<classname>Zend_Application</classname>で始めるようにさせるべきです。
  348. そして、アプリケーション・ブートストラップを作成しだすべきです。
  349. ここから、リソース・メソッドや、再利用性を最大にするために、リソース・プラグイン・クラスを作成し始めるべきです。
  350. より学ぶために、引き続きご覧下さい!
  351. </para>
  352. </sect2>
  353. </sect1>