Zend_Application-QuickStart.xml 14 KB

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