Zend Framework - MVC - 2008

Post on 25-Jan-2015

1.519 views 1 download

description

Desarrollo de aplicaciones MVC con Zend Framework.

Transcript of Zend Framework - MVC - 2008

1

Zend FrameworkDesarrollo de aplicaciones MVC en PHPDesarrollo de aplicaciones MVC en PHP

Juan Carbajal PaxiJuan Carbajal Paxi

2

Agenda

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

3

Introducción

4

¿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.

5

¿Qué frameworks existen?

Nombre Lenguaje LicenciaRubyOnRails Ruby MITStruts Java/j2ee ApacheSpring Framework Java/j2ee ApacheTapestry Java/j2ee ApacheAurora Java/j2ee ApacheCatalyst Perl GPLCakePHP PHP MITCodeIgniter PHP GNU/GPLKumbia PHP GNU/GPLSymfony PHP MITSeagull PHP MITQcodo PHP MITZend PHP MITZope3 Python ZPLTurbogears Python VariasDjango Python BSDMonoRails .NET ApacheSpring .Net .NET Apache

6

Frameworks PHP

Zend Cake Code Igniter SymfonyPHP5 Si No No Si

No Si Si SiInternacionalización Oficial Si En progreso No Si

No No No SiRequiere Configuración Si No No SiProveedor ORM comprensible No Si No Si (Propel)Buena documentación y tutoriales Si Si Si SiTesteo de unidades Si No No SiSoporte de Comunidad Si Si Si Si

Estructura de directorios predefinida

Scripts de línea de comandos para la instalación del framework

7

¿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/

8

Metas de Zend Framework

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.

Piensen en hacer las cosas simples, pero no mas simples. (Albert Einstein)

9

Enfoque de Zend Framework

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

10

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

11

MVC

12

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.

13

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 DatosControlador -> Modelo -> Vista

14

Modelo Vista Controlador

15

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

16

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

17

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.

18

Modelo Vista Controlador

19

Interacción MVC

Controlador <-> VistaEl controlador y la vista pueden interactuar

Controlador <-> ModeloEl controlador puede extraer datos de el modelo para decisiones o puede modificar el modelo.

Vista <- ModeloLa vista puede acceder al modelo para recibir datos, pero no para escribir en el.

20

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.

21

Zend Framework

22

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

23

Modelo: Zend_Db

24

Vista: Zend_View

Usa PHP como lenguaje de plantillaAsigna 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.

25

Vista: Zend_View

26

Controlador: Zend_Controller

Bootstrap:Instancia de Zend_Controller_FrontConfiguració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 despachodespacha acción (Zend_Controller_Dispatcher_Standard)

controlador instanciado (Zend_Controller_Action)llamada al método acción

Envía respuesta (Zend_Controller_Response_Abstract)

27

Controlador: Zend_Controller_Action

28

Estructura de Archivos

Estructura de archivos/www

/app/models/controller/views

/helpers/scripts

/index/library

/Zend/public

.htaccessindex.php/javascript/css

29

Estructura de Archivos

Estructura de archivos (modular)/www

/app/models/modules

/default/controller/views/helpers/filters/scripts

/index/library

/Zend/public

.htaccessindex.php/javascript/css

30

Ventajas de Zend Framework

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

31

Aplicación

32

Librerías

33

Componentes

MVCBase de DatosI18NAutentificaciónServicios WebCorreo, Formato, BúsquedaUtilidad

Zend_ControllerControlador FrontalRuteoManipulación de accionesPlugins y HelpersSolicitudesRespuestas

Zend_ViewPlantilla de clase PHPHelpersFiltros

Zend_Json (ajax)

34

Componentes

MVCBase de DatosI18NAutentificaciónServicios WebCorreo, Formato, BúsquedaUtilidad

Zend_Db_AdapterIBM Db2, Oracle, MySQL, MS Sql Server, PostgreSQL, Firebird, Sqlite.

Zend_Db_ProfilerZend_Db_SelectZend_Db_Table

Zend_Db_Table_RowsetZend_Db_Table_RowActiveRecord

35

Componentes

MVCBase de DatosI18NAutentificaciónServicios WebCorreo, Formato, BúsquedaUtilidad

Zend_LocaleZend_Translate

Array, CSV, GetText, QT, Tmx, Xliff

Zend_DateZend_Measure

36

Componentes

MVCBase de DatosI18NAutentificaciónServicios WebCorreo, Formato, BúsquedaUtilidad

Zend_AuthDbTableDigestHttp

Zend_SessionPersistente.

Zend_AclManejo de roles y privilegios

37

Componentes

MVCBase de DatosI18NAutentificaciónServicios WebCorreo, Formato, BúsquedaUtilidad

Zend_Http_ClientZend_Rest_ClientZend_Service

Akimef, Amazon, Flickr, Simpy, Audioscrobbler, Strikelron, Delicious, Yahoo

Zend_Feed (RSS y Atom)Zend_Gdata (Google Data Api)Zend_XmlRpc_Client

38

Componentes

MVCBase de DatosI18NAutentificaciónServicios WebCorreo, Formato, BusquedaUtilidad

Zend_MailZend_Mime

Lee o envia correosZend_Pdf

Lee, edita y crea documentos PDF

Zend_Search_LuceneIngieneria de BusquedaCompatibilidad con Apache Lucene

39

Componentes

MVCBase de DatosI18NAutentificaciónServicios WebCorreo, Formato, BusquedaUtilidad

Zend_CacheZend_ConfigZend_Console_GetoptZend_FilterZend_Filter_InputZend_LoaderZend_Log

40

¿Preguntas?