Está en la página 1de 40

Zend Framework

Desarrollo de aplicaciones MVC en PHP


Juan Carbajal Paxi

1
Agenda

Introducción.
MVC.
Zend Framework.
Aplicación.
Librerías.

2
Introducción

3
¿Por qué un framework?

Común plataforma de desarrollo para un equipo.


Consistencia y orden de código en distintos proyectos.
Testeadas y probada soluciones a un problema común.
Ahorro de tiempo en la programación.
Mejora la seguridad de la aplicación.

4
¿Qué frameworks existen?

Nombre Lenguaje Licencia


RubyOnRails Ruby MIT
Struts Java/j2ee Apache
Spring Framework Java/j2ee Apache
Tapestry Java/j2ee Apache
Aurora Java/j2ee Apache
Catalyst Perl GPL
CakePHP PHP MIT
CodeIgniter PHP GNU/GPL
Kumbia PHP GNU/GPL
Symfony PHP MIT
Seagull PHP MIT
Qcodo PHP MIT
Zend PHP MIT
Zope3 Python ZPL
Turbogears Python Varias
Django Python BSD
MonoRails .NET Apache
Spring .Net .NET Apache

5
Frameworks PHP

Zend Cake Code Igniter Symfony


PHP5 Si No No Si
Estructura de directorios
predefinida No Si Si Si
Internacionalización Oficial Si En progreso No Si
Scripts de línea de comandos para
la instalación del framework No No No Si
Requiere Configuración Si No No Si
Proveedor ORM comprensible No Si No Si (Propel)
Buena documentación y tutoriales Si Si Si Si
Testeo de unidades Si No No Si
Soporte de Comunidad Si Si Si Si

6
¿Por qué Zend Framework?

Zend Framework provee un esqueleto de alta calidad


para el desarrollo de Aplicaciones Web y Servicios
Web. Siguiendo el espíritu de PHP, fácil uso y potente
funcionalidad; enfocándose en cambios de
construcción de aplicaciones web robustas, seguras y
modernas.
http://framework.zend.com/

7
Metas de Zend Framework

Piensen en hacer las cosas simples, pero


no mas simples. (Albert Einstein)

Simple es fácil de usar.


Simple es mas estable y menos propenso a errores.
Simple es mas compatible.
Simple es fácil de mantener.

8
Enfoque de Zend Framework

Simple ya es poderoso.
Foco en las tareas.
Alta productividad.
Costo efectivo.
Simples tareas para configurar aplicaciones.

9
Caracteristicas de Zend Framework

Librería basada en componentes que resuelve el 80%


de problemas comunes.
Arquitectura flexible.
PHP 5, OO.
Diseño extensible.
Encapsula las mejores prácticas.
Bien documentada.
Soporte comercial (Zend)
Soporte en Zend Studio/Eclipse (PDT)
Licencia BSD

10
MVC

11
Historia

Aplicaciones Tradicionales.
Strust (1999).
Ruby on Rails (Convención sobre configuración).
Existe un intento de llevar la programación orientada a
eventos a la web.

12
Modelo Vista Controlador

Es un patrón de arquitectura de software que divide


una aplicación en tres capas.
Originalmente fue implementado como un mapa
tradicional de ingreso:
Ingreso de Datos -> Proceso -> Salida de Datos
Controlador -> Modelo -> Vista

13
Modelo Vista Controlador

14
Modelo

Es la representación especifica de datos y lógica de


datos que asegura la integridad y herencia de datos.
Representa datos y su actividad.
Responde a solicitudes e instrucciones de cambio.
No tiene conocimiento sobre el controlador o la vista.
Ejemplo
UML -> SQL -> PHP Object

15
Vista

Son un conjunto de scripts que estructuran la


representación de datos en la salida (pantalla,
servicios, impresoras).
Es la forma de visualización del estado del modelo.
Captura datos.
Ejm:
lista.html, noticias.xml, reporte.pdf, comentarios.html

16
Controlador

Manejador de eventos que provocan cambios en el


modelo y/o la vista.
Es el despachador de respuestas y controlador de flujo.
Ofrece facilidades para cambiar el estado del modelo,
interpretando eventos del ratón y del teclado; y
comandando el modelo y/o vista para cambiar
apropiadamente.

17
Modelo Vista Controlador

18
Interacción MVC

Controlador <-> Vista


El controlador y la vista pueden interactuar
Controlador <-> Modelo
El controlador puede extraer datos de el modelo para
decisiones o puede modificar el modelo.
Vista <- Modelo
La vista puede acceder al modelo para recibir datos, pero no
para escribir en el.

19
Ventajas

Separa la manipulación de datos, la representación y el


control de eventos, permitiendo un código mantenible.
Decrementa la duplicación de código.
Centraliza el control de datos.
Facilita el mantenimiento y modificación de la
aplicación.
Ayuda a equipos de desarrollo en centrarse en áreas
especificas.
Mayor facilidad para añadir fuentes de datos y tipos de
clientes.

20
Zend Framework

21
Modelo: Zend_Db

Provee la abstracción de la Base de datos mediante


Zend_Db_Adapter.
Limitado (query) abstracción de consulta.
Provee opcional consulta de perfiles.
Tabla de conexión directa vía Zend_Db_Table.
Beneficios:
Código portable.
Fácil asignación de base de datos para todas las tablas.
OO

22
Modelo: Zend_Db

23
Vista: Zend_View

Usa PHP como lenguaje de plantilla


Asigna variables en el objeto Zend_View.
Accede a las variables con notación de objetos $this->var
El formato seleccionado es utilizado en la respuesta.
Variables grabadas en la plantilla.
Helpers:
Registro de helpers en la carpeta de la vista.
Filters:
Filtros para convertir formatos HTML a PDF, JSON, XML, Tidy,
etc.
Ventajas:
todo el PHP a su disposición.

24
Vista: Zend_View

25
Controlador: Zend_Controller

Bootstrap:
Instancia de Zend_Controller_Front
Configuración del entorno frontal del controlador
$front->dispatch()
Captura solicitud (Zend_Controller_Request_Abstract)
Rutea solicitud (Zend_Controller_Route_Rewrite)
/controlador/accion/parametro/valor
/modulo/controlador/accion/parametro/valor
/biblioteca/usuario/buscar/nombre/jose
Inicia interacción de despacho
despacha acción (Zend_Controller_Dispatcher_Standard)
controlador instanciado (Zend_Controller_Action)
llamada al método acción
Envía respuesta (Zend_Controller_Response_Abstract)

26
Controlador: Zend_Controller_Action

27
Estructura de Archivos

Estructura de archivos
/www
/app
/models
/controller
/views
/helpers
/scripts
/index
/library
/Zend
/public
.htaccess
index.php
/javascript
/css

28
Estructura de Archivos

Estructura de archivos (modular)


/www
/app
/models
/modules
/default
/controller
/views
/helpers
/filters
/scripts
/index
/library
/Zend
/public
.htaccess
index.php
/javascript
/css

29
Ventajas de Zend Framework

Claridad de diseño.
Modularidad eficiente.
Múltiples vistas y presentaciones.
Extensible y configurable.
DIstribuible.

30
Aplicación

31
Librerías

32
Componentes

MVC Zend_Controller
Base de Datos Controlador Frontal
I18N Ruteo
Manipulación de acciones
Autentificación Plugins y Helpers
Servicios Web Solicitudes
Correo, Formato, Respuestas
Búsqueda Zend_View
Utilidad Plantilla de clase PHP
Helpers
Filtros
Zend_Json (ajax)

33
Componentes

MVC Zend_Db_Adapter
Base de Datos IBM Db2, Oracle, MySQL,
I18N MS Sql Server,
PostgreSQL, Firebird,
Autentificación Sqlite.
Servicios Web Zend_Db_Profiler
Correo, Formato, Zend_Db_Select
Búsqueda Zend_Db_Table
Utilidad Zend_Db_Table_Rowset
Zend_Db_Table_Row
ActiveRecord

34
Componentes

MVC Zend_Locale
Base de Datos Zend_Translate
I18N Array, CSV, GetText, QT,
Autentificación Tmx, Xliff
Servicios Web Zend_Date
Correo, Formato, Zend_Measure
Búsqueda
Utilidad

35
Componentes

MVC Zend_Auth
Base de Datos DbTable
I18N Digest
Http
Autentificación
Zend_Session
Servicios Web Persistente.
Correo, Formato, Zend_Acl
Búsqueda Manejo de roles y
Utilidad privilegios

36
Componentes

MVC Zend_Http_Client
Base de Datos Zend_Rest_Client
I18N Zend_Service
Autentificación Akimef, Amazon, Flickr,
Servicios Web Simpy, Audioscrobbler,
Strikelron, Delicious,
Correo, Formato, Yahoo
Búsqueda Zend_Feed (RSS y Atom)
Utilidad Zend_Gdata (Google
Data Api)
Zend_XmlRpc_Client

37
Componentes

MVC Zend_Mail
Base de Datos Zend_Mime
I18N Lee o envia correos
Autentificación Zend_Pdf
Servicios Web Lee, edita y crea
documentos PDF
Correo, Formato,
Zend_Search_Lucene
Busqueda Ingieneria de Busqueda
Utilidad Compatibilidad con
Apache Lucene

38
Componentes

MVC Zend_Cache
Base de Datos Zend_Config
I18N Zend_Console_Getopt
Autentificación Zend_Filter
Servicios Web Zend_Filter_Input
Correo, Formato, Zend_Loader
Busqueda Zend_Log
Utilidad

39
¿Preguntas?

40

También podría gustarte