2
0

Zend_Application-QuickStart.xml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 17372 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.application.quick-start">
  5. <title>Zend_Application démarrage rapide</title>
  6. <para>
  7. Il existe deux manières d'aborder
  8. <classname>Zend_Application</classname>, elles dépendent de la manière dont vous commencez
  9. votre projet. Dans tous les cas, vous devrez créer une classe
  10. <classname>Bootstrap</classname> et un fichier de configuration.
  11. </para>
  12. <para>
  13. Si vous souhaitez utiliser <classname>Zend_Tool</classname> pour créer votre projet,
  14. continuez votre lecture. Si vous ajoutez
  15. <classname>Zend_Application</classname> à un projet existant, vous devriez
  16. <link linkend="zend.application.quick-start.manual">passer à la suite</link>.
  17. </para>
  18. <sect2 id="zend.application.quick-start.zend-tool">
  19. <title>Utiliser Zend_Tool</title>
  20. <para>
  21. La manière la plus rapide d'utiliser <classname>Zend_Application</classname> est d'appeler
  22. <classname>Zend_Tool</classname> pour créer votre projet. Ceci va aussi créer la classe de
  23. <classname>Bootstrap</classname>.
  24. </para>
  25. <para>
  26. Pour créer un projet, éxecutez la commande <command>zf</command> (sur les systèmes *nix):
  27. </para>
  28. <programlisting language="sh"><![CDATA[
  29. % zf create project newproject
  30. ]]></programlisting>
  31. <para>
  32. Pour Windows, <filename>zf.bat</filename>:
  33. </para>
  34. <programlisting language="dos"><![CDATA[
  35. C:> zf.bat create project newproject
  36. ]]></programlisting>
  37. <para>
  38. Ceci va créer une structure de projet ressemblant à:
  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. Dans une telle structure, le bootstrap est
  69. <filename>newproject/application/Bootstrap.php</filename>, et ressemble
  70. en premier lieux à ceci:
  71. </para>
  72. <programlisting language="php"><![CDATA[
  73. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  74. {
  75. }
  76. ]]></programlisting>
  77. <para>
  78. Notez aussi la présence d'un fichier de configuration
  79. <filename>newproject/application/configs/application.ini</filename>, il contient:
  80. </para>
  81. <programlisting language="dosini"><![CDATA[
  82. [production]
  83. phpSettings.display_startup_errors = 0
  84. phpSettings.display_errors = 0
  85. includePaths.library = APPLICATION_PATH "/../library"
  86. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  87. bootstrap.class = "Bootstrap"
  88. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
  89. [staging : production]
  90. [testing : production]
  91. phpSettings.display_startup_errors = 1
  92. phpSettings.display_errors = 1
  93. [development : production]
  94. phpSettings.display_startup_errors = 1
  95. phpSettings.display_errors = 1
  96. ]]></programlisting>
  97. <para>
  98. Tous ces paramètres s'utilisent avec
  99. <classname>Zend_Application</classname> et avec le bootstrap.
  100. </para>
  101. <para>
  102. Un autre fichier intéressant est
  103. <filename>newproject/public/index.php</filename>, qui invoque
  104. <classname>Zend_Application</classname> et le démarre.
  105. </para>
  106. <programlisting language="php"><![CDATA[
  107. // Define path to application directory
  108. defined('APPLICATION_PATH')
  109. || define('APPLICATION_PATH',
  110. realpath(dirname(__FILE__) . '/../application'));
  111. // Define application environment
  112. defined('APPLICATION_ENV')
  113. || define('APPLICATION_ENV',
  114. (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
  115. : 'production'));
  116. /** Zend_Application */
  117. require_once 'Zend/Application.php';
  118. // Create application, bootstrap, and run
  119. $application = new Zend_Application(
  120. APPLICATION_ENV,
  121. APPLICATION_PATH . '/configs/application.ini'
  122. );
  123. $application->bootstrap()
  124. ->run();
  125. ]]></programlisting>
  126. <para>
  127. Pour continuer le guide de démarrage rapide,<link
  128. linkend="zend.application.quick-start.resources">voyez la section sur les
  129. Ressources</link>.
  130. </para>
  131. </sect2>
  132. <sect2 id="zend.application.quick-start.manual">
  133. <title>Ajouter Zend_Application à votre existant</title>
  134. <para>
  135. Les bases de <classname>Zend_Application</classname> sont très simples:
  136. </para>
  137. <itemizedlist>
  138. <listitem><para>
  139. Créez un fichier <filename>application/Bootstrap.php</filename> contenant une classe
  140. <classname>Bootstrap</classname>.
  141. </para></listitem>
  142. <listitem><para>
  143. Créez un fichier <filename>application/configs/application.ini</filename>
  144. contenant la configuration de base pour <classname>Zend_Application</classname>.
  145. </para></listitem>
  146. <listitem><para>
  147. Modifiez <filename>public/index.php</filename> afin d'utiliser
  148. <classname>Zend_Application</classname>.
  149. </para></listitem>
  150. </itemizedlist>
  151. <para>
  152. D'abord, créez la classe <classname>Bootstrap</classname> class. Dans le fichier
  153. <filename>application/Bootstrap.php</filename>, voici le contenu:
  154. </para>
  155. <programlisting language="php"><![CDATA[
  156. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  157. {
  158. }
  159. ]]></programlisting>
  160. <para>
  161. Créez maintenant votre configuration. Pour ce tutoriel, nous utilisons une syntaxe
  162. <acronym>INI</acronym>, bien sûr une syntaxe <acronym>XML</acronym> ou
  163. <acronym>PHP</acronym> est utilisable aussi. Créez donc le fichier
  164. <filename>application/configs/application.ini</filename>, et ajoutez lui ce contenu:
  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. Maintenant, modifions le script de démarrage
  184. <filename>public/index.php</filename>. Si le fichier n'existe pas, créez le, et placez ce contenu dedans:
  185. </para>
  186. <programlisting language="php"><![CDATA[
  187. // Define path to application directory
  188. defined('APPLICATION_PATH')
  189. || define('APPLICATION_PATH',
  190. realpath(dirname(__FILE__) . '/../application'));
  191. // Define application environment
  192. defined('APPLICATION_ENV')
  193. || define('APPLICATION_ENV',
  194. (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
  195. : 'production'));
  196. // Typically, you will also want to add your library/ directory
  197. // to the include_path, particularly if it contains your ZF installed
  198. set_include_path(implode(PATH_SEPARATOR, array(
  199. dirname(dirname(__FILE__)) . '/library',
  200. get_include_path(),
  201. )));
  202. /** Zend_Application */
  203. require_once 'Zend/Application.php';
  204. // Create application, bootstrap, and run
  205. $application = new Zend_Application(
  206. APPLICATION_ENV,
  207. APPLICATION_PATH . '/configs/application.ini'
  208. );
  209. $application->bootstrap()
  210. ->run();
  211. ]]></programlisting>
  212. <para>
  213. Notez que l'environnement applicatif est défini dans une constante
  214. "APPLICATION_ENV". Nous recommandons la spécification d'un tel paramètre dans la configuration
  215. générale du serveur web. Pour Apache, vous pouvez utiliser <filename>.htaccess</filename>
  216. si votre serveur le permet. Nous recommandons un fichier <filename>public/.htaccess</filename>
  217. avec le contenu suivant:
  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>Apprenez mod_rewrite</title>
  230. <para>
  231. Les règles de réécriture ci-dessus autorisent l'accès à tout fichier existant
  232. dans l'hôte virtuel. S'il existe des fichiers que vous ne voulez pas exposer, utilisez
  233. des règles plus restrictives. Le site web d'Apache <ulink
  234. url="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">vous permettra d'en apprendre
  235. plus au sujet de mod_rewrite</ulink>.
  236. </para>
  237. </note>
  238. <para>
  239. Voila, à partir de maintenant nous sommes prêts à tirer partie de la puissance de
  240. <classname>Zend_Application</classname>.
  241. </para>
  242. </sect2>
  243. <sect2 id="zend.application.quick-start.resources">
  244. <title>Ajouter et créer des ressources</title>
  245. <para>
  246. Si vous avez suivi les instructions jusqu'à maintenant, alors votre classe de
  247. bootstrap utilisera le contrôleur frontal et lorsque lancée, lancera le dispatch
  248. du contrôleur frontal. En vérité, il va être rapidement nécessaire de rajouter de
  249. la configuration, concernant d'autres objets divers (appelés "ressources").
  250. </para>
  251. <para>
  252. Nous allons voir ici comment créer et configurer des ressources. D'abord un layout,
  253. puis nous personnaliserons un objet de vue.
  254. </para>
  255. <para>
  256. Une ressource assez standard proposée par
  257. <classname>Zend_Application</classname> est "layout". Cette ressource attend
  258. une configuration qu'elle fera suivre immédiatement à
  259. <classname>Zend_Layout</classname>.
  260. </para>
  261. <para>
  262. Pour l'utiliser, vous devrez modifier votre fichier de configuration comme suit:
  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. ; AJOUTEZ CES LIGNES
  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. Si ce n'est pas déja fait, créez le dossier
  284. <filename>application/layouts/scripts/</filename>, et le fichier
  285. <filename>layout.phtml</filename> dans ce même dossier. Voici un exemple de script
  286. de layout tout à fait classique:
  287. </para>
  288. <programlisting language="php"><![CDATA[
  289. <?php echo $this->doctype() ?>
  290. <html>
  291. <head>
  292. <?php echo $this->headTitle() ?>
  293. <?php echo $this->headLink() ?>
  294. <?php echo $this->headStyle() ?>
  295. <?php echo $this->headScript() ?>
  296. </head>
  297. <body>
  298. <?php echo $this->layout()->content ?>
  299. </body>
  300. </html>
  301. ]]></programlisting>
  302. <para>
  303. Voila, vous avez un layout fonctionnel.
  304. </para>
  305. <para>
  306. Maintenant passons à la vue. Nous voulons un DocType <acronym>HTML</acronym> et
  307. une valeur de titre par défaut à utiliser dans la partie "head". Nous pouvons
  308. ordonner ceci en éditant la classe
  309. <classname>Bootstrap</classname> et en ajoutant une méthode
  310. </para>
  311. <programlisting language="php"><![CDATA[
  312. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  313. {
  314. protected function _initView()
  315. {
  316. // Initialisons la view
  317. $view = new Zend_View();
  318. $view->doctype('XHTML1_STRICT');
  319. $view->headTitle('My First Zend Framework Application');
  320. // Ajoutons la au ViewRenderer
  321. $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
  322. 'ViewRenderer'
  323. );
  324. $viewRenderer->setView($view);
  325. // Retourner la vue pour qu'elle puisse être stockée par le bootstrap
  326. return $view;
  327. }
  328. }
  329. ]]></programlisting>
  330. <para>
  331. Cette méthode va être lancée automatiquement lors du bootstrap et configurera une vue.
  332. </para>
  333. </sect2>
  334. <sect2 id="zend.application.quick-start.next-steps">
  335. <title>Aller plus loin avec Zend_Application</title>
  336. <para>
  337. Nous vennons de voir comment configurer de manière basique <classname>Zend_Application</classname>
  338. ainsi que les principes du bootstrap. Pour un maximum de réutilisation de code, vous devriez
  339. songer à utiliser des plugins de ressources. Continuez à lire la suite!
  340. </para>
  341. </sect2>
  342. </sect1>