Zend_Application-QuickStart.xml 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15103 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.application.quick-start">
  5. <title>Inicio rápido con Zend_Application</title>
  6. <para>
  7. Hay dos caminos para iniciarse con
  8. <classname>Zend_Application</classname>, y dependen de cómo inicia su
  9. proyecto. En cada caso, siempre se comienza con la creación de la
  10. clase <code>Bootstrap</code>, y un archivo de configuración asociado.
  11. </para>
  12. <para>
  13. Si planea utilizar <classname>Zend_Tool</classname> para crear su
  14. proyecto, continúe leyendo. Si va añadir
  15. <classname>Zend_Application</classname> a un proyecto existente,
  16. debe <link linkend="zend.application.quick-start.manual"> ir aquí</link>.
  17. </para>
  18. <sect2 id="zend.application.quick-start.zend-tool">
  19. <title>Usando Zend_Tool</title>
  20. <para>
  21. La forma más rápida para comenzar a utilizar
  22. <classname>Zend_Application</classname> es usar
  23. <classname>Zend_Tool</classname> para generar su proyecto.
  24. Esto también creará su clase y archivo <code>Bootstrap</code>.
  25. </para>
  26. <para>
  27. Para crear un proyecto, ejecute el comando <code>zf</code> (en sistemas *nix):
  28. </para>
  29. <programlisting role="sh"><![CDATA[
  30. % zf create project newproject
  31. ]]></programlisting>
  32. <para>
  33. O el comando <code>zf.bat</code> en Windows:
  34. </para>
  35. <programlisting role="dos"><![CDATA[
  36. C:> zf.bat create project newproject
  37. ]]></programlisting>
  38. <para>
  39. Ambos crearán una estructura del proyecto que se parece a lo siguiente:
  40. </para>
  41. <programlisting role="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. En el diagrama anterior, su bootstrap se encuentra en
  70. <code>newproject/application/Bootstrap.php</code>, y al principio
  71. se vería así:
  72. </para>
  73. <programlisting role="php"><![CDATA[
  74. class Bootstrap extends Zend_Application_Bootstrap_BootstrapAbstract
  75. {
  76. }
  77. ]]></programlisting>
  78. <para>
  79. También notará que se ha creado un archivo de configuración,
  80. <code>newproject/application/configs/application.ini</code>.
  81. Con el siguiente contenido:
  82. </para>
  83. <programlisting role="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. Todos las opciones en este archivo de configuración son para
  101. su uso con <classname>Zend_Application</classname>
  102. y su bootstrap.
  103. </para>
  104. <para>
  105. Otro archivo de interés es <code>newproject/public/index.php</code>,
  106. el cual invoca a
  107. <classname>Zend_Application</classname> y lo envía.
  108. </para>
  109. <programlisting role="php"><![CDATA[
  110. <?php
  111. // Define el path al directorio de la aplicación
  112. defined('APPLICATION_PATH')
  113. || define('APPLICATION_PATH',
  114. realpath(dirname(__FILE__) . '/../application'));
  115. // Define el medio ambiente de la aplicación
  116. defined('APPLICATION_ENV')
  117. || define('APPLICATION_ENV',
  118. (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
  119. : 'production'));
  120. /** Zend_Application */
  121. require_once 'Zend/Application.php';
  122. // Crea la application, el bootstrap, y lo ejecuta
  123. $application = new Zend_Application(
  124. APPLICATION_ENV,
  125. APPLICATION_PATH . '/configs/application.ini'
  126. );
  127. $application->bootstrap()
  128. ->run();
  129. ]]></programlisting>
  130. <para>
  131. Para continuar con el inicio rápido, por favor
  132. <link linkend="zend.application.quick-start.resources">
  133. vaya a la sección de Recursos</link>.
  134. </para>
  135. </sect2>
  136. <sect2 id="zend.application.quick-start.manual">
  137. <title>Añadir Zend_Application a su aplicación</title>
  138. <para>
  139. Los fundamentos de <classname>Zend_Application</classname> son bastante simples:
  140. </para>
  141. <itemizedlist>
  142. <listitem><para>
  143. Crear un archivo <code>application/Bootstrap.php</code>, con la
  144. clase <code>Bootstrap</code>.
  145. </para></listitem>
  146. <listitem><para>
  147. Crear un archivo de configuración
  148. <code>application/configs/application.ini</code>
  149. con la configuración básica necesaria para
  150. <classname>Zend_Application</classname>.
  151. </para></listitem>
  152. <listitem><para>
  153. Modificar su <code>public/index.php</code> para usar
  154. <classname>Zend_Application</classname>.
  155. </para></listitem>
  156. </itemizedlist>
  157. <para>
  158. Primero, genere su clase <code>Bootstrap</code>. Crear un archivo,
  159. <code>application/Bootstrap.php</code>, con el siguiente contenido:
  160. </para>
  161. <programlisting role="php"><![CDATA[
  162. <?php
  163. class Bootstrap extends Zend_Application_Bootstrap_BootstrapAbstract
  164. {
  165. }
  166. ]]></programlisting>
  167. <para>
  168. Ahora, debe crear su configuración. Para este tutorial, usaremos
  169. una configuración de estilo INI; puede, por supuesto,
  170. usar un archivo de configuración XML o PHP. Cree el archivo
  171. <code>application/configs/application.ini</code>, proporcionando
  172. el siguiente contenido.
  173. </para>
  174. <programlisting role="dosini"><![CDATA[
  175. [production]
  176. phpSettings.display_startup_errors = 0
  177. phpSettings.display_errors = 0
  178. includePaths.library = APPLICATION_PATH "/../library"
  179. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  180. bootstrap.class = "Bootstrap"
  181. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
  182. [staging : production]
  183. [testing : production]
  184. phpSettings.display_startup_errors = 1
  185. phpSettings.display_errors = 1
  186. [development : production]
  187. phpSettings.display_startup_errors = 1
  188. phpSettings.display_errors = 1
  189. ]]></programlisting>
  190. <para>
  191. Ahora, modifiquemos su script de entrada (gateway),
  192. <code>public/index.php</code>. Si el archivo no existe, cree uno;
  193. de lo contrario, sustitúyalo por el siguiente contenido:
  194. </para>
  195. <programlisting role="php"><![CDATA[
  196. <?php
  197. // Define la ruta al directorio de la aplicación
  198. defined('APPLICATION_PATH')
  199. || define('APPLICATION_PATH',
  200. realpath(dirname(__FILE__) . '/../application'));
  201. // Define el entorno de la aplicación
  202. defined('APPLICATION_ENV')
  203. || define('APPLICATION_ENV',
  204. (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
  205. : 'production'));
  206. /** Zend_Application */
  207. require_once 'Zend/Application.php';
  208. // Crea la aplicación, el bootstrap, y lo ejecuta
  209. $application = new Zend_Application(
  210. APPLICATION_ENV,
  211. APPLICATION_PATH . '/configs/application.ini'
  212. );
  213. $application->bootstrap()
  214. ->run();
  215. ]]></programlisting>
  216. <para>
  217. Se puede observar que el valor constante del entorno de la aplicación
  218. busca una variable de entorno "APPLICATION_ENV".
  219. Recomendamos este ajuste en el entorno de su servidor web.
  220. En Apache, puede también configurarlo en la definición de su vhost,
  221. o en su archivo <code>.htaccess</code>. Recomendamos el siguiente
  222. contenido para su archivo <code>public/.htacces</code>:
  223. </para>
  224. <programlisting role="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. <para>
  234. En este punto, está listo para comenzar a usar las ventajas de
  235. <classname>Zend_Application</classname>.
  236. </para>
  237. </sect2>
  238. <sect2 id="zend.application.quick-start.resources">
  239. <title>Agregando y Creando Recursos</title>
  240. <para>
  241. Si ha seguido las instrucciones anteriores, entonces su clase de
  242. arranque estará utilizando un controlador frontal (front controller),
  243. y cuando se ejecute, enviará el controlador frontal (front controller).
  244. Sin embargo, con toda probabilidad, necesitará un poco más de
  245. configuración que ésta.
  246. </para>
  247. <para>
  248. En esta sección, veremos como añadir dos recursos a su aplicación.
  249. En primer lugar, estableceremos los layouts,
  250. y luego vamos a personalizar sus objetos de la vista.
  251. </para>
  252. <para>
  253. Uno de los recursos estándar provistos con
  254. <classname>Zend_Application</classname> es el recurso "layout".
  255. Este recurso espera que definas valores de configuración, los
  256. que entonces utilizará para configurar su instancia
  257. <classname>Zend_Layout</classname>.
  258. </para>
  259. <para>
  260. Para usarlo, todo lo que tenemos que hacer es actualizar el
  261. archivo de configuración.
  262. </para>
  263. <programlisting role="dosini"><![CDATA[
  264. [production]
  265. phpSettings.display_startup_errors = 0
  266. phpSettings.display_errors = 0
  267. includePaths.library = APPLICATION_PATH "/../library"
  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.phtml"
  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 hasta ahora no lo ha hecho, genere el directorio
  284. <code>application/layouts/scripts/</code>, y el archivo
  285. <code>layout.phtml</code> dentro de ese directorio. Un buen layout
  286. inicial es como sigue
  287. (y vincularlo con los recursos de la vista que cubriremos a continuación):
  288. </para>
  289. <programlisting role="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. En este punto, usted tendrá un layout ya trabajando.
  305. </para>
  306. <para>
  307. Ahora, vamos añadir una vista de recurso personalizada.
  308. Cuando se inicializa la vista, queremos establecer el DocType HTML
  309. y un valor predeterminado del título para utilizarlo en la cabecera
  310. de HTML. Esto puede llevarse a cabo editando su clase
  311. <code>Bootstrap</code> para agregar un método.
  312. </para>
  313. <programlisting role="php"><![CDATA[
  314. <?php
  315. class Bootstrap extends Zend_Application_Bootstrap_BootstrapAbstract
  316. {
  317. protected function _initView()
  318. {
  319. // Inicializar la vista
  320. $view = new Zend_View();
  321. $view->doctype('XHTML1_STRICT');
  322. $view->headTitle('My First Zend Framework Application');
  323. // Añadir al ViewRenderer
  324. $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
  325. 'ViewRenderer'
  326. );
  327. $viewRenderer->setView($view);
  328. // Retorno, de modo que pueda ser almacenada en el arranque (bootstrap)
  329. return $view;
  330. }
  331. }
  332. ]]></programlisting>
  333. <para>
  334. Este método se ejecuta automáticamente cuando arranca la aplicación,
  335. y se asegurará que su vista sea inicializada según las necesidades
  336. de su aplicación.
  337. </para>
  338. </sect2>
  339. <sect2 id="zend.application.quick-start.next-steps">
  340. <title>Próximos pasos con Zend_Application</title>
  341. <para>
  342. Con lo anterior debería poder comenzar con <classname>Zend_Application</classname>
  343. y con la creación del bootstrap de su aplicación. De aquí, usted debe comenzar a
  344. crear sus métodos de recursos, o para la máxima re-usabilidad,
  345. clases de recursos de plugin. Y seguir leyendo para aprender más!
  346. </para>
  347. </sect2>
  348. </sect1>