Introducción a Zend Framework

download Introducción a Zend Framework

of 26

Transcript of Introducción a Zend Framework

Introduccin a Zend Framework, un poderoso framework que nos ayudar a reducir nuestro tiempo de desarrollo adems de integrar diferentes apis de distintos sitios como google o flickr haciendo nuestro trabajo ms fcil y rpido. 16 Retweet Compartir17 5

Autor: elericuz Hola! soy Eric de Per. Desarrollo en PHP desde hace 10 aos aunque tambin manejo C++ y Java. Trabajo para una empresa de eventos de juegos pero tambin ejerzo de freelance. Puedes seguirme en mi twitter.

Introduccin a Zend FrameworkZend Framework est desarrollado en php con el afn de hacer el trabajo de los programadores ms simple y amistoso. Est hecho basado en la programacin orientada a objetos pensando en hacer aplicaciones ms seguras orientadas a la web 2.0 y a los web services, utilizando el patrn MVC. Para ello han desarrollado diferentes APIs para servicios populares como Flickr, Google, etc entre otros y han integrado frameworks javascript como Dojo Toolkit y jQuery. ZF est disponible en http://framework.zend.com de forma gratuita. Se instala desempaquetando el archivo comprimido en la ruta en la que estar nuestro host.

Estructura de carpetasLa estructura bsica de carpetas de ZF es la siguiente: 1. -home/ 2. --- application/ 3. ----- config/ 4. ----- controllers/ 5. ------- ErrorController.php 6. ------- IndexController.php 7. ----- models/ 8. ----- views/ 9. ------- scripts/ 10. --------- index/ 11. ----------- index.phtml 12. ----- Bootstrap.php

13. --- library/ 14. ------ Zend 15. --- www/ Analicemos la estructura:

En application, ir en si la aplicacin que realizaremos. En library, ir la librera de Zend (es la que desempaquetamos). www es la caperta expuesta a internet. En ella almacenaremos los js, imgenes, css, y principalmente nuestro archivo index.php.

Esta vez usaremos ZF bajo la convencin modular, esto quiere decir que nuestra aplicacin crecer por mdulos, lo que hace que sea ms escalable y porttil. Cmo? Cada mdulo es una miniaplicacin, permitindonos reutilizarla en diferentes proyectos sin realizar mucho trabajo de adaptacin. Con ello la estructura de la carpeta application sera as: view plaincopy to clipboardprint? 1. -application/ 2. --- config/ 3. --- modules/ 4. ----- default/ 5. ------- controllers/ 6. --------- ErrorController.php 7. --------- IndexController.php 8. ------- views/ 9. --------- scripts/ 10. ----------- error/ 11. ------------- error.phtml 12. ----------- index/ 13. ------------- index.phtml 14. ----- blog/ 15. ------- controllers/ 16. --------- IndexController.php 17. ------- views/ 18. --------- scripts/ 19. ----------- index/ 20. ------------- index.phtml 21. ------- Bootstrap.php La configuracin de la aplicacin: application.ini Hay un archivo config/application.ini en el que se guarda la configuracin inicial de la aplicacin. Es muy sencillo. Sera as: view plaincopy to clipboardprint? 1. [production]

2. ;error 3. phpSettings.display_startup_errors =0 4. phpSettings.display_errors =0 5. ;include path 6. includePaths.library = LIBRARY_PATH 7. ;bootstrap 8. bootstrap.path = ROOT_PATH "application/Bootstrap.php" 9. bootstrap.class = "Bootstrap" 10. ;resources.frontController 11. resources.frontController.moduleDirectory = ROOT_PATH "application/module s" 12. resources.frontController.moduleControllerDirectoryName = "controllers" 13. resources.frontController.defaultModule = "default" 14. resources.frontController.defaultControllerName = "index" 15. resources.frontController.defaultAction = "index" 16. ;convencion modular 17. resources.modules = 18. ;resources.db 19. resources.db.adapter = "pdo_mysql" 20. resources.db.params.host = "localhost" 21. resources.db.params.username = "usuario_produccion" 22. resources.db.params.password = "hhjj" 23. resources.db.params.dbname = "news" 24. resources.db.isDefaultTableAdapter = true 25. 26. [development : production] 27. phpSettings.display_startup_errors =1 28. phpSettings.display_errors =1 29. resources.db.params.username = "usuario_desarrollo" 30. resources.db.params.password = "nnmm" 31. resources.db.params.dbname = "news_desarrollo" Qu significa todo esto? En ZF se utilizan cuatro estados de trabajo:

[production] [staging : production] [testing : production] [development : production]

Los estados staging, testing y development, heredarn las configuraciones de production, excepto los hayamos reescrito como en el ejemplo anterior con la base de datos. Es til porque podemos pasar de un estado en desarrollo a otro en produccin con tan solo declararlo en el index.php sin tener que volver a escribir las nuevas configuraciones. En application.ini, podemos definir, los errores, el include_path(importantsimo para toda la aplicacin), el bootstrap(se encargar de inicializar el resto de la aplicacin), los layouts, el froncontroller, la base de datos, y la configuracin de las vistas, etc.

Es decir, definimos la configuracin del php que usaremos, el bootstrap, los recursos y los plugins. El arracandor de ZF: el Bootstrap El Bootstrap.php de la aplicacin hereda de Zend_Application_Bootstrap_Bootstrap mientras que el de los mdulos hereda de Zend_Application_Module_Bootstrap. Ambos pueden realizar las mismas tareas. En el Bootstrap, todas las funciones que empiezen por _init se ejecutan automticamente. Estas tienen que ser protected. view plaincopy to clipboardprint? 1. Los controladores El IndexController.php sera como sigue: view plaincopy to clipboardprint? 1. Para los controladores de los mdulos, tenemos que indicar la ruta en el nombre de la clase, as: view plaincopy to clipboardprint? 1. class News_IndexController extends Zend_Controller_Action Las vistas Debemos tener en cuenta que cada funcin que termine en Action, necesita un archivo .phtml con el mismo nombre. Por ejemplo indexAction() estar relacionado con index.phtml. Tambin podriamos indicarle que utilice otra vista o no que simplemente no tenga ninguna. La vista para este ejemplo sera index.phtml: view plaincopy to clipboardprint? 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
13. que tal mi aplicacion en ontuts 14. 15.

La pgina de error Antes de ejecutar nuestra aplicacin debemos saber que ZF nos pide que tengamos una pgina de error. De tal manera que ahora s, podremos no nos olvidaremos de hacer nuestra propia pgina de error y podremos conocer cul es, 404 o 505 o el que fuere y as poder darle al usuario final una mejor orientacin de que hacer. Es importante tener en cuenta que sin el controlador ErrorController.php la aplicacin no funcionar. Tenemos que hacer una clase ErrorController y guardarla en el mdulo default. En realidad se maneja igual que cualquier otro controlador y su vista. El mtodo usado dentro de ErrorController deber ser errorAction, el ErrorController.php quedara asi: view plaincopy to clipboardprint? 1. 2. 3. 4. 5. 6. 7.

Y su vista sera asi (error.phtml): view plaincopy to clipboardprint? 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Error 404 12. La pgina no existe! 13. 14. Y eso es todo hasta aqu por hoy .

Reflexin final

ZF ha sido creado para hacer nuestro trabajo ms simple. Pone a nuestra disposicin adaptadores de diferentes motores de base de datos, de tal manera que para cambiar de, por ejemplo, MySQL a PostgreSQL bastara con modificar solo unas cuantas lneas en su archivo de configuracin. Adems las libreras que nos brinda son muy tiles. Hacer una validacin de usuarios con ZF es muy simple y sobre todo segura usando Zend_Auth o subir un archivo usando Zend_File_Transfer_Adapter_Http es una tarea muy simple. En los siguientes artculos iremos viendo como realizar estas y otras tareas. Esto ha sido solo una introduccin a Zend Framework que espero les ayude en su trabajo como desarrolladores. Si tienen alguna consulta o algo no les qued muy en claro, no duden en dejar su comentario. Nos vemos en el prximo artculo! En este segundo artculo de la serie de introduccin a Zend Framework veremos cmo se trabaja con layouts y cmo nos ayudan a ahorrar tiempo durante la integracin de nuestra programacin con la maquetacin web. 30 Retweet Compartir4 3

Autor: elericuz Hola! soy Eric de Per. Desarrollo en PHP desde hace 10 aos aunque tambin manejo C++ y Java. Trabajo para una empresa de eventos de juegos pero tambin ejerzo de freelance. Puedes seguirme en mi twitter.

Introduccin: Qu son y para qu sirven los Layouts en Zend FrameworkCuando desarrollamos una aplicacin nos damos cuenta que varias de las pantallas son bsicamente iguales y lo nico que cambia son los contenidos interiores de estos. Para muestra un pequeo y sencillo ejemplo:

Como podemos ver en el ejemplo, estructuralmente no hay mucha diferencia entre las dos pginas. En la primera mostramos el home, mientras que en la segunda otro texto cualquiera. Las dos tienen un encabezado y un cuerpo, pero si nos fijamos bien, veremos que solo vara el cuerpo. En el artculo anterior Empezado con Zend Framework, colocamos en las vistas todo el html, desde las etiquetas lo cual est bien porque funciona bien. Pero si tuvisemos una aplicacin con ms 100 vistas (algo que puede darse perfectamente), entonces no sera prctico. Si hiciramos algn cambio en la maquetacin, tendramos que hacerlo en todas las vistas. Imginnlo, nunca terminaramos. Los layouts suelen ser una gran ayuda durante la integracin del php y el html. Nos ahorran mucho trabajo y aunque no es obligatorio su uso, debera ser un estndar en nuestro trabajo con ZF Por suerte existen los layouts. Estos incrustarn todo el contenido colocado en la vista y adems podrn tener el contenido de otros layouts. Podemos crear todos los layouts que necesitemos, sin lmite. Declarando el layout Habr un layout principal para toda la aplicacin. La ubicacin de estos, debido a que es parte de la aplicacin, debera estar dentro de la carpeta de la aplicacin, aunque es posible especificar cualquier otra. Esto lo podemos definir en el archivo application.ini de la siguiente manera: view plaincopy to clipboardprint? 1. ;resources.layout 2. resources.layout.layoutPath 3. resources.layout.layout

= APPLICATION_PATH "layouts/scripts" = "home"

El nombre del archivo del layout ser el que nosotros querramos. En nuestro ejemplo home.phtml pero en application.ini no colocaremos la extensin. Si no declaramos la ruta de los layouts, ZF los buscar en layouts/scripts dentro de la carpeta de la aplicacin. A menudo podremos necesitar layouts para contenido xml o json, o talvez un layout en blanco. Eso depender de lo que necesitemos.

Escribiendo un layoutVeamos un sencillo ejemplo de cmo se escribe un layout: view plaincopy to clipboardprint? 1. 2. 3. 4. 5. 14. 15. 16. 17. 18. 19. 20. Como podemos ver, el ejemplo anterior contiene las cabeceras ms importantes del html, pero la lnea siguiente: view plaincopy to clipboardprint? 1. es la encargada de insertar el contenido de la vista en el layout. Absolutamente todo lo que est en la vista, se guardar en la variable de layout content.

Qu ocurre con las dems lneas de cdigo? Pues ellas traen contenido declarado en los controladores o en el bootstrap.php. Veamos ahora como sera nuestra vista: view plaincopy to clipboardprint? 1. 2.
3. que tal mi aplicacion en ontuts Podemos notar que el cdigo dentro de la vista se ha reducido a solamente lo que necesitamos de ella. Es importante darnos cuenta de un detalle: $this->layout()->content; almacena el contenido de la vista, pero est dentro del mbito $this-&bt;layout() y a este tambin podemos asignarle otros valores desde el controlador.

Variable de layoutAntes de continuar, quiero regresar unas lineas arribas y que se den cuenta de algo que he escrito y es muy interesante: variable de layout. Y qu es una variable de layout? Desde los controladores, les podemos pasar a las vistas cierta informacin en forma de variable de vista. Ya lo hemos visto antes as: $this->view->mensaje. lo recuerdan? El problema est en que este valor es solo para una vista especfica y para aquella en la que hemos llamado a su Action(). Las variables de layout nos permitirn reutilizar los valores de las variables en las distintas vistas de nuestra aplicacin, en lugar de estar disponibles para una nica vista en particular. Por el contrario, una variable de layout, estar disponible en todas las vistas, sin importar el Action en el que estemos. Es decir, tiene un entorno ms amplio. Noten que digo vistas. Las variables de layouts, se pueden utilizar en todos los layouts y en todas las vistas. Es decir, en todos los archivos .phtml. Pero para qu quiero una variable de layout? Supongamos que me autentifico en mi aplicacin y quiero que en ella aparezca mi nickname (nombre de usuario), siempre en todas las pginas. Podra almacenar ese dato en una variable de layout. La forma en la que declarao esta variable es muy sencilla: view plaincopy to clipboardprint? 1. $this->layout->nickname = 'elericuz';

Por otro lado, en el layout o en la vista, lo nico que necesito hacer para mostrarla es imprimir su valor mediante la funcin echo(): view plaincopy to clipboardprint? 1. echo $this->layout()->nickname;

Controlando los layoutsMs arriba mencion que a menudo podramos necesitar utilizar diferentes layouts para diferentes tareas. Piensen que el diseo del home ser diferente al diseo de las pginas internas. En ese caso al menos, necesitaremos 2 layouts: home.phtml y internas.phtml home.phtml view plaincopy to clipboardprint? 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. internas.phtml view plaincopy to clipboardprint? 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.

11.