Zend_Application-QuickStart.xml 15 KB

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