Zend_Application-QuickStart.xml 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 16270 -->
  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 <emphasis>Bootstrap</emphasis>, 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 <emphasis>Bootstrap</emphasis>.
  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 medio ambiente 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 <emphasis>Bootstrap</emphasis>.
  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 <emphasis>Bootstrap</emphasis>. 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_BootstrapAbstract
  163. {}
  164. ]]></programlisting>
  165. <para>
  166. Ahora, debe crear su configuración. Para este tutorial, usaremos
  167. una configuración de estilo <acronym>INI</acronym>; puede, por supuesto,
  168. usar un archivo de configuración <acronym>XML</acronym> o <acronym>PHP</acronym>. Cree el archivo
  169. <filename>application/configs/application.ini</filename>, proporcionando
  170. el siguiente contenido.
  171. </para>
  172. <programlisting language="dosini"><![CDATA[
  173. [production]
  174. phpSettings.display_startup_errors = 0
  175. phpSettings.display_errors = 0
  176. includePaths.library = APPLICATION_PATH "/../library"
  177. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  178. bootstrap.class = "Bootstrap"
  179. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
  180. [staging : production]
  181. [testing : production]
  182. phpSettings.display_startup_errors = 1
  183. phpSettings.display_errors = 1
  184. [development : production]
  185. phpSettings.display_startup_errors = 1
  186. phpSettings.display_errors = 1
  187. ]]></programlisting>
  188. <para>
  189. Ahora, modifiquemos su script de entrada (gateway),
  190. <filename>public/index.php</filename>. Si el archivo no existe, cree uno;
  191. de lo contrario, sustitúyalo por el siguiente contenido:
  192. </para>
  193. <programlisting language="php"><![CDATA[
  194. <?php
  195. // Define la ruta al directorio de la aplicación
  196. defined('APPLICATION_PATH')
  197. || define('APPLICATION_PATH',
  198. realpath(dirname(__FILE__) . '/../application'));
  199. // Define el entorno de la aplicación
  200. defined('APPLICATION_ENV')
  201. || define('APPLICATION_ENV',
  202. (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV')
  203. : 'production'));
  204. // Typically, you will also want to add your library/ directory
  205. // to the include_path, particularly if it contains your ZF install
  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. // Crea la aplicación, el bootstrap, y lo ejecuta
  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. Se puede observar que el valor constante del entorno de la aplicación
  222. busca una variable de entorno "APPLICATION_ENV".
  223. Recomendamos este ajuste en el entorno de su servidor web.
  224. En Apache, puede también configurarlo en la definición de su vhost,
  225. o en su archivo <filename>.htaccess</filename>. Recomendamos el siguiente
  226. contenido para su archivo <filename>public/.htaccess</filename>:
  227. </para>
  228. <programlisting language="conf"><![CDATA[
  229. SetEnv APPLICATION_ENV development
  230. RewriteEngine On
  231. RewriteCond %{REQUEST_FILENAME} -s [OR]
  232. RewriteCond %{REQUEST_FILENAME} -l [OR]
  233. RewriteCond %{REQUEST_FILENAME} -d
  234. RewriteRule ^.*$ - [NC,L]
  235. RewriteRule ^.*$ index.php [NC,L]
  236. ]]></programlisting>
  237. <note>
  238. <title>Más información sobre mod_rewrite</title>
  239. <para>
  240. Las reglas de reescritura le permitin reescribir el acceso a
  241. cualquier archivo en la raíz de los documentos web de su host virtual.
  242. Si hay archivos que no desea que esten expuestos y desea ocualtarlos, puedes
  243. ser mas restrictivo en tus reglas
  244. Ir a la página web de Apache <ulink
  245. url="http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html">para obtener más información acerca de about mod_rewrite</ulink>.
  246. </para>
  247. </note>
  248. <para>
  249. En este punto, está listo para comenzar a usar las ventajas de
  250. <classname>Zend_Application</classname>.
  251. </para>
  252. </sect2>
  253. <sect2 id="zend.application.quick-start.resources">
  254. <title>Agregando y Creando Recursos</title>
  255. <para>
  256. Si ha seguido las instrucciones anteriores, entonces su clase de
  257. arranque estará utilizando un controlador frontal (front controller),
  258. y cuando se ejecute, enviará el controlador frontal (front controller).
  259. Sin embargo, con toda probabilidad, necesitará un poco más de
  260. configuración que ésta.
  261. </para>
  262. <para>
  263. En esta sección, veremos como añadir dos recursos a su aplicación.
  264. En primer lugar, estableceremos los layouts,
  265. y luego vamos a personalizar sus objetos de la vista.
  266. </para>
  267. <para>
  268. Uno de los recursos estándar provistos con
  269. <classname>Zend_Application</classname> es el recurso "layout".
  270. Este recurso espera que definas valores de configuración, los
  271. que entonces utilizará para configurar su instancia
  272. <classname>Zend_Layout</classname>.
  273. </para>
  274. <para>
  275. Para usarlo, todo lo que tenemos que hacer es actualizar el
  276. archivo de configuración.
  277. </para>
  278. <programlisting language="dosini"><![CDATA[
  279. [production]
  280. phpSettings.display_startup_errors = 0
  281. phpSettings.display_errors = 0
  282. bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
  283. bootstrap.class = "Bootstrap"
  284. resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
  285. ; ADD THE FOLLOWING LINES
  286. resources.layout.layout = "layout"
  287. resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
  288. [staging : production]
  289. [testing : production]
  290. phpSettings.display_startup_errors = 1
  291. phpSettings.display_errors = 1
  292. [development : production]
  293. phpSettings.display_startup_errors = 1
  294. phpSettings.display_errors = 1
  295. ]]></programlisting>
  296. <para>
  297. Si hasta ahora no lo ha hecho, genere el directorio
  298. <filename>application/layouts/scripts/</filename>, y el archivo
  299. <filename>layout.phtml</filename> dentro de ese directorio. Un buen layout
  300. inicial es como sigue
  301. (y vincularlo con los recursos de la vista que cubriremos a continuación):
  302. </para>
  303. <programlisting language="php"><![CDATA[
  304. <?php echo $this->doctype() ?>
  305. <html>
  306. <head>
  307. <?php echo $this->headTitle() ?>
  308. <?php echo $this->headLink() ?>
  309. <?php echo $this->headStyle() ?>
  310. <?php echo $this->headScript() ?>
  311. </head>
  312. <body>
  313. <?php echo $this->layout()->content ?>
  314. </body>
  315. </html>
  316. ]]></programlisting>
  317. <para>
  318. En este punto, usted tendrá un layout ya trabajando.
  319. </para>
  320. <para>
  321. Ahora, vamos añadir una vista de recurso personalizada.
  322. Cuando se inicializa la vista, queremos establecer el DocType <acronym>HTML</acronym>
  323. y un valor predeterminado del título para utilizarlo en la cabecera
  324. de <acronym>HTML</acronym>. Esto puede llevarse a cabo editando su clase
  325. <emphasis>Bootstrap</emphasis> para agregar un método.
  326. </para>
  327. <programlisting language="php"><![CDATA[
  328. <?php
  329. class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
  330. { protected function _initView()
  331. {
  332. // Inicializar la vista
  333. $view = new Zend_View();
  334. $view->doctype('XHTML1_STRICT');
  335. $view->headTitle('My First Zend Framework Application');
  336. // Añadir al ViewRenderer
  337. $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper(
  338. 'ViewRenderer'
  339. );
  340. $viewRenderer->setView($view);
  341. // Retorno, de modo que pueda ser almacenada en el arranque (bootstrap)
  342. return $view;
  343. }
  344. }]]></programlisting>
  345. <para>
  346. Este método se ejecuta automáticamente cuando arranca la aplicación,
  347. y se asegurará que su vista sea inicializada según las necesidades
  348. de su aplicación.
  349. </para>
  350. </sect2>
  351. <sect2 id="zend.application.quick-start.next-steps">
  352. <title>Próximos pasos con Zend_Application</title>
  353. <para>
  354. Con lo anterior debería poder comenzar con <classname>Zend_Application</classname>
  355. y con la creación del bootstrap de su aplicación. De aquí, usted debe comenzar a
  356. crear sus métodos de recursos, o para la máxima re-usabilidad,
  357. clases de recursos de plugin. Y seguir leyendo para aprender más!
  358. </para>
  359. </sect2>
  360. </sect1>