Zend Framework

download Zend Framework

of 13

Transcript of Zend Framework

INTRODUCCINEl presente trabajo trata sobre el Zend Framework, que es un framework de cdigo abierto para desarrollar aplicaciones web y servicios web con PHP 5, Zend Framework es una implementacin que usa cdigo 100% orientado a objetos y la estructura de sus componentes es algo nico; cada componente est construido con una baja dependencia de otros componentes. Aunque se pueden utilizar de forma individual, los componentes de la biblioteca estndar de Zend Framework conforman un potente y extensible framework de aplicaciones web al combinarse, este Framework ofrece un gran rendimiento y una robusta implementacin MVC, una abstracin de base de datos fcil de usar, y un componente de formularios que implementa la prestacin de formularios HTML, validacin y filtrado para que los desarrolladores puedan consolidar todas las operaciones usando de una manera sencilla la interfaz orientada a objetos. Zend Framework se basa en la simplicidad, orientado a objetos como se menciona anteriormente y utiliza las mejores prcticas y una base de cdigo rigurosamente gil, se centra en la construccin de web ms segura, confiable, moderna , aplicaciones 2.0, servicios web y APIs que consume ampliamente, entre principales proveedores encontramos empresas como Google , Amazon , Yahoo! , Flickr , as como los proveedores de API y catalogadores como StrikeIron y Programmable Web. A lo largo del trabajo se explicar ms detalladamente la historia, desarrollo, mtodos e implementacin de los mismos, as como un ejemplo para que se tenga una gua de cmo trabajar estas aplicaciones.

1

ZEND FRAMEWORKHISTORIA Y DESARROLLO A finales de 2005, Zend Technologies una compaia que se especializa en PHP comenz Zend Framework como parte de su proyecto de PHP para colaborar y fomentar el uso de PHP. Zend Framework es un proyecto de cdigo abierto que proporciona un marco de desarrollo web para PHP y est destinado a convertirse en uno de los marcos estndar para aplicaciones PHP. DESCRIPCIN Zend Framework fue creada para ayudar que la produccin de sitios web basado en PHP sea ms fcil y ms fcil de mantener en el largo plazo. Contiene un amplio conjunto de componentes reutilizables que incluyen desde un conjunto de Modelo-Vista-Controlador (MVC), componentes de generacin de PDF, etc. A lo largo de los post aprenderemos a utilizar los componentes de Zend Framework en el contexto de un sitio web real, hablaremos de lo que Zend Framework es y por qu deberan utilizar y veremos algunos de los diseos detrs de l METODOLOGA Zend Framework provee un conjunto estandarizado de componentes que permiten un fcil desarrollo de aplicaciones web que puede ser fcilmente desarrollado, mantenido y mejorado. Zend Framework tiene una serie de caractersticas clave que hacen que valga la pena investigar: Toda esta en la caja (ya hecha) Tiene un diseo moderno Es fcil de aprender Tiene toda la documentacin El desarrollo es simple y rpido

Dicha lista es dura al principio as que echemos un vistazo a cada elemento y ver lo que significa para nosotros como desarrolladores de sitios web.

MODELOS QUE UTILIZA 1. Arquitectura Use At Will:Zend Framework tiene la arquitectura Use At Will que en espaol es un "uso a voluntad". Lo que esto significa es que se puede utilizar todo eso o puede usar nada de eso. O usted puede utilizar cualquier otra cosa. Si se desea usar Zend_Queue, pero se desea migrar la aplicacin a Zend_Controller No es un problema. Tiene la libertad para tomar las decisiones que se necesita para ser mejor un arquitecto de la aplicacin. La gente a menudo sacrifica la libertad por conveniencia. Con ZF se puede elegir el grado de libertad que desea y la cantidad de comodidad que se desea.

2

2. Modelo Vista Controlador: MVC es un acrnimo para Model-View-Controller (Modelo-Vista-Controlador); esta es un patrn de arquitectura de software. Bsicamente este patrn divide una aplicacin (en este caso una aplicacin web) en tres partes: Modelo: Es la parte que se entender con la base de datos, una manera elegante y clara de separar esto, es que para cada tabla generar una clase que ser su Modelo, aunque en realidad podra ser que un Modelo controle varias tablas que tengan mucho en comn, por ejemplo para las relaciones muchos-a-muchos. Controlador: Se encarga de procesar la entrada del usuario, en nuestro caso de recoger los datos de formularios, la URL, etc. Procesarlos (utilizando los otros componentes ya que esta parte debera ser la nica que se comunica con los dems y las otras partes deben estar aisladas) y producir un resultado. Vista: Es la parte que maneja la parte que el usuario ver, el caso ms comn es tener una pgina en HTML, pero las posibilidades son que podemos tener incluso pginas en WAP (contenido mbil) o representaciones de texto. El controlador procesar todo lo necesario y enviar sus resultados a la vista (en el caso de Zend Framework mediante asignacin de variables). La vista procesar todos los datos de una manera que sean claros para el usuario (aunque una vez ms, esto podra ser incluso tener como salida por ejemplo XML para una API para comunicacin entre libreras)

3

Zend_Controller es el corazn del sistema de Zend Framework MVC. MVC es sinnimo de "Model-View-Controller y es un patrn de diseo dirigido a separar la lgica de la aplicacin de la lgica de la pantalla. Zend_Controller_Front implementa un delantero modelo de controlador, en el que todas las solicitudes son interceptados por el controlador frontal y envi a los controladores de accin individuales en funcin de la direccin URL solicitada. El sistema fue construido Zend_Controller pensando en la extensibilidad, ya sea por medio de subclases de las clases existentes, escribiendo nuevas clases que implementan las distintas interfaces y clases abstractas que constituyen el fundamento de la familia de controladores de clases, o escribir plugins o ayudantes de accin para aumentar o manipular el funcionalidad del sistema.

ETAPAS EN BASE AL MVC CON LAS QUE TRABAJA ZEND FRAMEWORK PARA LA CREACIN DE APLICACIONES WEB En nuestras aplicaciones con Zend Framework tenemos controladores (controllers) y dentro de ellos existen acciones (actions), as si por ejemplo estuviramos programando un blog y llamamos a: http://localhost/zf/primer-proyecto/public/entradas/agregar, el controlador sera entradas y la accin agregar

FASE 1: CREANDO EL CONTROLADOR

Para crear acciones basta con abrir una terminal, acceder al directorio de nuestro proyecto (/var/www/zf/primer-proyecto/application/controllers) y ejecutar los siguientes comandos:

Estos crearan las acciones add, edit y delete dentro del controlador index. Si todo se realiz correctamente deberas poder ver dentro del directorio application/controllers un archivo llamado IndexController.php

4

Archivo creado: Controller

Al crear este archivo, la estructura de los archivos controladores quedara as:

5

FASE 2: CREANDO EL MODELO Se configura la informacin de nuestra base de datos, para esto abrimos el archivo: /var/www/zf/primer-proyecto/application/configs/application.ini y agregamos dentro de [production] (antes de [staging : production]), lo siguiente: resources.db.adapter resources.db.params.host resources.db.params.username resources.db.params.password resources.db.params.dbname = = = = = Creamos las Tablas PDO_MYSQL localhost usuario clave nombrebasededatos

Ingresamos Registros

El archivo modelo queda as:

6

FASE 3: CREANDO LA VISTA En Zend Framework encontramos las vistas en el directorio views y se organizan de la forma: views/scripts/{nombredelcontrolador}/{nombredelaaccion}.phtml . En la mayora de los proyectos hay partes de cdigo HTML que se repite para todas las vistas, por ejemplo: un encabezado, una columna lateral y el pie de pgina. Para evitar repetir cdigo es que existe la posibilidad de crear un layout o plantilla donde colocaremos el cdigo comn y desde donde llamaremos las vistas. Lo primero que debemos hacer es crear el directorio: application/layouts/ y agregar en nuestro archivo de configuracin (configs/applications.ini) la siguiente linea (justo despus de la configuracin de la base de datos que agregamos): resources.layout.layoutpath = APPLICATION_PATH /layouts

Resultado de las Fases:

7

VENTAJAS DE ZF

Es desarrollado por Zend que es la empresa que respalda comercialmente a PHP. Trabaja con MVC. Cuenta con mdulos para manejar archivos PDF, canales RSS, Web Services (Amazon, Flickr, Yahoo), etc. El Marco de Zend tambin incluye objetos de las diferentes bases de datos, por lo que es extremadamente simple para consultar su base de datos, sin tener que escribir ninguna consulta SQL. Una solucin para el acceso a base de datos que balancea el ORM con eficiencia y simplicidad. Completa documentacin y tests de alta calidad. Soporte avanzado para i18n (internacionalizacin). Un buscador compatible con Lucene. Robustas clases para autenticacin y filtrado de entrada. Clientes para servicios web, incluidos Google Data APIs y StrikeIron. Muchas otras clases tiles para hacerlo tan productivo como sea posible. Amplia documentacin disponible. Ligero, y sin instalacin (para comenzar a desarrollar una aplicacin basta con copiar los archivos, y ponerse a trabajar). Compatibilidad con una amplia variedad de servidores y configuraciones (la aplicacin se concebira para ejecutarse en un hosting compartido con otros clientes, y con relativamente poca posibilidad de configuracin). Flexibilidad, ya que no obliga a tener una determinada estructura de tablas, nombres de campos, ni adherirse a una forma de programar concreta.

DESVENTAJAS DE ZF La mayor desventaja es que un framework es conocido y si alguien sabe que tipo de framework se uso, el sitio se vuelve vulnerable. Su curva de aprendizaje y el tiempo necesario para comenzar un nuevo proyecto, aunque eso mejoro un poco con los componentes RAD (Rapid Application Development). Desarrollado por un grupo reducido (poco testing)

8

DIAGRAMAS Se pueden utilizar los 13 diagramas UML que conocemos, ya que esto es un cdigo abierto para desarrollar aplicaciones web y servicios web con php 5, ya que es una implementacin que usa cdigo 100% orientado a objetos. Diagramas Estructurales Diagrama de Clases Diagrama de Objetos Diagrama de Componentes Diagrama de Estructura Compuesta Diagrama de Despliegue Diagrama de Paquetes

Diagrama de Comportamiento Diagrama de Secuencia Diagrama de Comunicaciones Diagrama de Descripcin de la Interaccin Diagrama de Tiempos Diagrama de Actividades Diagrama de Casos de Uso Diagrama de Mquina de Estados

EJEMPLOContenido del archivo index.php y .htaccess El archivo .htaccess es muy simple, debido a que solamente habilita Mod_Rewrite y redirecciona todas las peticiones al archivo index.php:1. RewriteEngine on 2. 3. RewriteRule !\.(js|ico|gif|jpg|png|css|swf)$ index.php

La primera linea habilita Mod_Rewrite, la otra linea indica que salvo las ligas que contengan las extensiones js, ico, gif, jpg, png, css y swf deben procesarse con el archivo index.php, aqui se puede hacer que por ejemplo se habiliten algunos directorios para no ser procesador por el archivoindex.php (por ejemplo un directorio de imagenes), pero esto debe ser tratado con cada caso en particular.

1. require_once 'Zend/Controller/Front.php'; 2. require_once 'Zend/Layout.php'; 3. 4. require_once './app/Danguer_Controller_Action.php'; 5.

9

6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18.

// Configurar controlador $controller = Zend_Controller_Front::getInstance(); $controller->setControllerDirectory('./app/controllers'); $controller->throwExceptions(true); // asignar MVC Zend_Layout::startMvc(array( 'layoutPath' => './app/layouts', 'layout' => 'principal' )); // ejecutar! $controller->dispatch();

Las primeras lineas llaman las libreras necesarias que son el despachador de los controladores (Zend/Controller/Front.php) y la plantilla (Zend/Layout.php) la otra lnea requiriendo un archivo en php (./app/Danguer_Controller_Action.php) ser discutido ms adelante, pero en esta parte podemos incluir todas los archivos/libreras que necesitemos, tanto de Zend como propios. La siguiente lnea de cdigo genera el despachador, bsicamente genera una instancia de este despachador (es nica para toda la aplicacin, por eso utilizamos de manera esttica sin construirlo), asignamos el directorio de los controladores (./app/controllers) y por ltimo permitimos que muestre excepciones por ser cdigo en desarrollo (en produccin se sugiere no utilizarlo para no dejar ver cdigo importante a los usuarios). La siguiente parte tiene como misin inicializar el sistema MVC de la parte de la plantilla. Anteriormente Zend Framework no manejaba plantillas en sus vistas, algo odioso porque se necesitaba crear un cdigo propio (aunque haba buenos ejemplos en la red). Actualmente con esa lnea podemos definir la plantilla que utilizarn las vistas. Ms adelante veremos como est hecha la plantilla. Con ese cdigo hemos definido que el sistema debe buscar en el directorio ./app/layouts las plantillas, y que la plantilla por defecto es principal que el archivo debe llamarse:./app/layouts/principal.phtml Con esto el sistema llamar a los controladores de la manera que veremos en la siguiente seccin.

Proceso del MVC Zend Framework una vez que tenga la liga (en este caso /ajax/resultado) proceder a enrutarla, es decir a convertir la liga en el controlador y accin deseada. Si no modificamos nada, por defecto el enrutamiento funciona de la siguiente manera:1. http://sitio/controlador/accion

As en nuestro ejemplo, el controlador es ajax y la accin es resultado. Por supuesto se pueden definir rutas alternativas, por ejemplo se puede decir que http://sitio/blog/2008 sea el controlador blog, la accin archivos y pasarle a la accin un parmetro de nombre annio con el valor 2008. Esto podra ser un alias de: http://sitio/blog/archivos?annio=2008 que funciona bajo la configuracin estndar

10

El ruteador puede ser tan personalizado que podemos pasar nuestro propio ruteador siempre y cuando se extienda de la interfaz: Zend_Controller_Router_Interface, o en su defecto que extienda la claseZend_Controller_Router_Abstract, pero esto son temas avanzados que podemos discutir en otro tutorial =). Una vez que el sistema sabe que controlador y accin es, proceder a llamar al controlador y a la accin. El controlador debe ser especificado de la siguiente forma:1. 2. 3. 4. 5. 6. 7. 8. , Zend tambin permite que las vistas utilicen cualquier otro sistema de plantillas que est escrito en PHP, por ejemplo Smarty. Dentro llamamos a las variables que hemos asignado de la siguiente manera:1.

Dentro de las vistas podemos alterar un poco la plantilla, para iniciar podemos cambiar el ttulo de la siguiente manera:1.

Eso har que el ttulo de la pgina sea Ventana Emergente, pero tambin podemos agregar un archivo de hoja de estilo de la siguiente manera:1.

O incluir un archivo de javascript:1.

El sistema de plantillas tiene algunas opciones extra que por brevedad no revisaremos, pero incluyen la posibilidad de incluir cdigo en javascript/css que manejar de manera adecuada mediante una cadena.

12

CONCLUSIONES

1. Zend Framework se caracteriza principalmente por su productividad en el desarrollo de aplicaciones.

extrema simplicidad y su

2. El Zend_Controller es sistema que fue construido pensando en la extensibilidad, ya sea por medio de subclases de las clases existentes o escribiendo nuevas clases.

3. El principal patrocinador del proyecto Zend Framework es Zend Technologies, pero muchas empresas han contribuido con componentes o caractersticas importantes para el marco.

4. Empresas como Google, Microsoft y StrikeIron se han asociado con Zend para proporcionar interfaces de servicios web y otras tecnologas que desean poner a disposicin de los desarrolladores de Zend Framework.

5. Gracias a que ZF es una arquitectura dbilmente acoplada permite a los desarrolladores utilizar los componentes por separado.

6. Zend Framework s una librera de componentes escritos en PHP5, para facilitar el desarrollo de sitios web.

13