Zend_Application-QuickStart.xml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 16727 -->
  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 empezar 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 <classname>Bootstrap</classname>, y un archivo de configuración asociado.
  11. </para>
  12. <para>
  13. Si se 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 <classname>Bootstrap</classname>.
  25. </para>
  26. <para>
  27. Para crear un proyecto, ejecute el comando <command>zf</command> (en sistemas *nix):
  28. </para>
  29. <programlisting language="sh"><![CDATA[
  30. % zf create project newproject
  31. ]]></programlisting>
  32. <para>
  33. O el comando <filename>zf.bat</filename> en Windows:
  34. </para>
  35. <programlisting language="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 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. En el diagrama anterior, su bootstrap se encuentra en
  70. <filename>newproject/application/Bootstrap.php</filename>, y al principio
  71. se vería así:
  72. </para>
  73. <programlisting language="php"><![CDATA[
  74. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  75. {}
  76. ]]></programlisting>
  77. <para>
  78. También notará que se ha creado un archivo de configuración,
  79. <filename>newproject/application/configs/application.ini</filename>.
  80. Con el siguiente contenido:
  81. </para>
  82. <programlisting language="dosini"><![CDATA[
  83. [production]
  84. phpSettings.display_startup_errors = 0
  85. phpSettings.display_errors = 0
  86. includePaths.library = APPLICATION_PATH "/../library"
  87. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  88. bootstrap.class = "Bootstrap"
  89. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
  90. [staging : production]
  91. [testing : production]
  92. phpSettings.display_startup_errors = 1
  93. phpSettings.display_errors = 1
  94. [development : production]
  95. phpSettings.display_startup_errors = 1
  96. phpSettings.display_errors = 1
  97. ]]></programlisting>
  98. <para>
  99. Todos las opciones en este archivo de configuración son para
  100. su uso con <classname>Zend_Application</classname>
  101. y su bootstrap.
  102. </para>
  103. <para>
  104. Otro archivo de interés es <filename>newproject/public/index.php</filename>,
  105. el cual invoca a
  106. <classname>Zend_Application</classname> y lo envía.
  107. </para>
  108. <programlisting language="php"><![CDATA[
  109. <?php
  110. // Define el path al directorio de la aplicación
  111. defined('APPLICATION_PATH')
  112. || define('APPLICATION_PATH',
  113. realpath(dirname(__FILE__) . '/../application'));
  114. // Define el entorno de la aplicación
  115. defined('APPLICATION_ENV')
  116. || define('APPLICATION_ENV',
  117. (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
  118. : 'production'));
  119. /** Zend_Application */
  120. require_once 'Zend/Application.php';
  121. // Crea la application, el bootstrap, y lo ejecuta
  122. $application = new Zend_Application(
  123. APPLICATION_ENV,
  124. APPLICATION_PATH . '/configs/application.ini'
  125. );
  126. $application->bootstrap()
  127. ->run();
  128. ]]></programlisting>
  129. <para>
  130. Para continuar con el inicio rápido, por favor
  131. <link linkend="zend.application.quick-start.resources">
  132. vaya a la sección de Recursos</link>.
  133. </para>
  134. </sect2>
  135. <sect2 id="zend.application.quick-start.manual">
  136. <title>Añadir Zend_Application a su aplicación</title>
  137. <para>
  138. Los fundamentos de <classname>Zend_Application</classname> son bastante simples:
  139. </para>
  140. <itemizedlist>
  141. <listitem><para>
  142. Crear un archivo <filename>application/Bootstrap.php</filename>, con la
  143. clase <classname>Bootstrap</classname>.
  144. </para></listitem>
  145. <listitem><para>
  146. Crear un archivo de configuración
  147. <filename>application/configs/application.ini</filename>
  148. con la configuración básica necesaria para
  149. <classname>Zend_Application</classname>.
  150. </para></listitem>
  151. <listitem><para>
  152. Modificar su <filename>public/index.php</filename> para usar
  153. <classname>Zend_Application</classname>.
  154. </para></listitem>
  155. </itemizedlist>
  156. <para>
  157. Primero, genere su clase <classname>Bootstrap</classname>. Crear un archivo,
  158. <filename>application/Bootstrap.php</filename>, con el siguiente contenido:
  159. </para>
  160. <programlisting language="php"><![CDATA[
  161. <?php
  162. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  163. {
  164. }
  165. ]]></programlisting>
  166. <para>
  167. Ahora, debe crear su configuración. Para este tutorial, usaremos
  168. una configuración de estilo <acronym>INI</acronym>; puede, por supuesto,
  169. usar un archivo de configuración <acronym>XML</acronym> o <acronym>PHP</acronym>. Cree el archivo
  170. <filename>application/configs/application.ini</filename>, proporcionando
  171. el siguiente contenido.
  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. Ahora, modifiquemos su script de entrada (gateway),
  191. <filename>public/index.php</filename>. Si el archivo no existe, cree uno;
  192. de lo contrario, sustitúyalo por el siguiente contenido:
  193. </para>
  194. <programlisting language="php"><![CDATA[
  195. <?php
  196. // Define la ruta al directorio de la aplicación
  197. defined('APPLICATION_PATH')
  198. || define('APPLICATION_PATH',
  199. realpath(dirname(__FILE__) . '/../application'));
  200. // Define el entorno de la aplicación
  201. defined('APPLICATION_ENV')
  202. || define('APPLICATION_ENV',
  203. (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
  204. : 'production'));
  205. // Typically, you will also want to add your library/ directory
  206. // to the include_path, particularly if it contains your ZF installed
  207. set_include_path(implode(PATH_SEPARATOR, array(
  208. dirname(dirname(__FILE__)) . '/library',
  209. get_include_path(),
  210. )));
  211. /** Zend_Application */
  212. require_once 'Zend/Application.php';
  213. // Crea la aplicación, el bootstrap, y lo ejecuta
  214. $application = new Zend_Application(
  215. APPLICATION_ENV,
  216. APPLICATION_PATH . '/configs/application.ini'
  217. );
  218. $application->bootstrap()
  219. ->run();
  220. ]]></programlisting>
  221. <para>
  222. Se puede observar que el valor constante del entorno de la aplicación
  223. busca una variable de entorno "APPLICATION_ENV".
  224. Recomendamos este ajuste en el entorno de su servidor web.
  225. En Apache, puede también configurarlo en la definición de su vhost,
  226. o en su archivo <filename>.htaccess</filename>. Recomendamos el siguiente
  227. contenido para su archivo <filename>public/.htaccess</filename>:
  228. </para>
  229. <programlisting language="conf"><![CDATA[
  230. SetEnv APPLICATION_ENV development
  231. RewriteEngine On
  232. RewriteCond %{REQUEST_FILENAME} -s [OR]
  233. RewriteCond %{REQUEST_FILENAME} -l [OR]
  234. RewriteCond %{REQUEST_FILENAME} -d
  235. RewriteRule ^.*$ - [NC,L]
  236. RewriteRule ^.*$ index.php [NC,L]
  237. ]]></programlisting>
  238. <note>
  239. <title>Más información sobre mod_rewrite</title>
  240. <para>
  241. Las reglas de reescritura le permitin reescribir el acceso a
  242. cualquier archivo en la raíz de los documentos web de su host virtual.
  243. Si hay archivos que no desea que esten expuestos y desea ocualtarlos, puedes
  244. ser mas restrictivo en tus reglas
  245. Ir a la página web de Apache <ulink
  246. url="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">para obtener más información acerca de about mod_rewrite</ulink>.
  247. </para>
  248. </note>
  249. <para>
  250. En este punto, está listo para comenzar a usar las ventajas de
  251. <classname>Zend_Application</classname>.
  252. </para>
  253. </sect2>
  254. <sect2 id="zend.application.quick-start.resources">
  255. <title>Agregando y Creando Recursos</title>
  256. <para>
  257. Si ha seguido las instrucciones anteriores, entonces su clase de
  258. arranque estará utilizando un controlador frontal (front controller),
  259. y cuando se ejecute, enviará el controlador frontal (front controller).
  260. Sin embargo, con toda probabilidad, necesitará un poco más de
  261. configuración que ésta.
  262. </para>
  263. <para>
  264. En esta sección, veremos como añadir dos recursos a su aplicación.
  265. En primer lugar, estableceremos los layouts,
  266. y luego vamos a personalizar sus objetos de la vista.
  267. </para>
  268. <para>
  269. Uno de los recursos estándar provistos con
  270. <classname>Zend_Application</classname> es el recurso "layout".
  271. Este recurso espera que definas valores de configuración, los
  272. que entonces utilizará para configurar su instancia
  273. <classname>Zend_Layout</classname>.
  274. </para>
  275. <para>
  276. Para usarlo, todo lo que tenemos que hacer es actualizar el
  277. archivo de configuración.
  278. </para>
  279. <programlisting language="dosini"><![CDATA[
  280. [production]
  281. phpSettings.display_startup_errors = 0
  282. phpSettings.display_errors = 0
  283. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  284. bootstrap.class = "Bootstrap"
  285. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
  286. ; ADD THE FOLLOWING LINES
  287. resources.layout.layout = "layout"
  288. resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
  289. [staging : production]
  290. [testing : production]
  291. phpSettings.display_startup_errors = 1
  292. phpSettings.display_errors = 1
  293. [development : production]
  294. phpSettings.display_startup_errors = 1
  295. phpSettings.display_errors = 1
  296. ]]></programlisting>
  297. <para>
  298. Si hasta ahora no lo ha hecho, genere el directorio
  299. <filename>application/layouts/scripts/</filename>, y el archivo
  300. <filename>layout.phtml</filename> dentro de ese directorio. Un buen layout
  301. inicial es como sigue
  302. (y vincularlo con los recursos de la vista que cubriremos a continuación):
  303. </para>
  304. <programlisting language="php"><![CDATA[
  305. <?php echo $this->doctype() ?>
  306. <html>
  307. <head>
  308. <?php echo $this->headTitle() ?>
  309. <?php echo $this->headLink() ?>
  310. <?php echo $this->headStyle() ?>
  311. <?php echo $this->headScript() ?>
  312. </head>
  313. <body>
  314. <?php echo $this->layout()->content ?>
  315. </body>
  316. </html>
  317. ]]></programlisting>
  318. <para>
  319. En este punto, usted tendrá un layout ya trabajando.
  320. </para>
  321. <para>
  322. Ahora, vamos añadir una vista de recurso personalizada.
  323. Cuando se inicializa la vista, queremos establecer el DocType <acronym>HTML</acronym>
  324. y un valor predeterminado del título para utilizarlo en la cabecera
  325. de <acronym>HTML</acronym>. Esto puede llevarse a cabo editando su clase
  326. <classname>Bootstrap</classname> para agregar un método.
  327. </para>
  328. <programlisting language="php"><![CDATA[
  329. <?php
  330. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  331. { protected function _initView()
  332. {
  333. // Inicializar la vista
  334. $view = new Zend_View();
  335. $view->doctype('XHTML1_STRICT');
  336. $view->headTitle('My First Zend Framework Application');
  337. // Añadir al ViewRenderer
  338. $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
  339. 'ViewRenderer'
  340. );
  341. $viewRenderer->setView($view);
  342. // Retorno, de modo que pueda ser almacenada en el arranque (bootstrap)
  343. return $view;
  344. }
  345. }]]></programlisting>
  346. <para>
  347. Este método se ejecuta automáticamente cuando arranca la aplicación,
  348. y se asegurará que su vista sea inicializada según las necesidades
  349. de su aplicación.
  350. </para>
  351. </sect2>
  352. <sect2 id="zend.application.quick-start.next-steps">
  353. <title>Próximos pasos con Zend_Application</title>
  354. <para>
  355. Con lo anterior debería poder comenzar con <classname>Zend_Application</classname>
  356. y con la creación del bootstrap de su aplicación. De aquí, usted debe comenzar a
  357. crear sus métodos de recursos, o para la máxima re-usabilidad,
  358. clases de recursos de plugin. Y seguir leyendo para aprender más!
  359. </para>
  360. </sect2>
  361. </sect1>