SlideShare a Scribd company logo
1 of 25
Download to read offline
AGritos!: Estudio y aplicación
práctica de frameworks MVC en
PHP5
Autores
Sergio Enjuto Méndez
Isidro Merayo Castellano
Tutor
F. Javier Pérez García
Índice
● Introducción.
● AGritos! un sistema de boletines electrónicos.
● Estudio frameworks MVC en PHP5.
● Implementación de la aplicación.
● Demo de la aplicación
● Conclusiones
● Ampliaciones
● Objetivos del proyecto.
– Definir las funcionalidades y necesidades.
– Estudio de frameworks MVC en PHP5.
– Implementar el proyecto utilizando un framework.
● Tecnologías y herramientas utilizadas
– LAMP/WAMP (Linux/Windows, Apache, MySQL y PHP)
– StarUML
– Eclipse PDT (PHP Development Tools)
– Subversion
Introducción
AGritos! un sistema de boletines electrónicos
● Introducción.
– Desarrollo de una nueva aplicación web: un sistema
de boletines.
– Módulos:
● Usuarios
● Suscriptores
● Boletines
● Temáticas
● Secciones
● Noticias
● Categorías
● Requisitos y especificaciones.
– La aplicación dispondrá de un área privada.
● Cada boletín en concreto estará formado por un
número de boletín y por una temática.
● Cada temática la podremos subdividir en un
conjunto de secciones.
● A cada sección de cada boletín se asignaran un
conjunto de noticias.
● Sistema de envío de correos electrónicos.
AGritos! un sistema de boletines electrónicos
Boletín: número + temática
Sección 2Sección 1
Noticia 3
Noticia 2
Noticia 1
Noticia 4
AGritos! un sistema de boletines electrónicos
● Requisitos y especificaciones (cont).
– Un área pública:
● Suscripción a los servicios del portal.
● Visualización de boletines y noticias.
– Disponer de un sistema multilingüe
Bienvenido al portal AGritos! Welcome to the site of AGritos! Herzlich Willkommen bei AGritos!
Diagrama de casos de uso
Diagrama de clases
Modelo entidad relación
● Características analizadas
– Múltiples BB.DD.
– ORM (Object-Relational mapping).
– Internacionalización (i18n) y localización (l10n).
– Sistema de Plantillas/Templates.
– Sistemas de Caché.
– Validación.
– AJAX.
– Seguridad.
Estudio de frameworks MVC en PHP5
● Características analizadas (cont.)
– Módulos.
– Instalación.
– Integración con otros frameworks.
– Test de pruebas unitarias y funcionales.
– Licencia del framework.
– Soporte Comunidad.
– Soporte Comercial.
– Documentación.
Estudio de frameworks MVC en PHP5
● Frameworks elegidos a analizar
Estudio de frameworks MVC en PHP5
ORM I18n / l10n Plantillas Caché Validación AJAX Seguridad
parcial parcial si si si parcial si no
si si parcial si si si si parcial
si si si no si si si si
si si si si si si si si
si si no no no si si no
si si si si si si si si
si si parcial no no si si si
QPHP si no no si si si si parcial
si si si si si si si si
si si si si si si si si
si parcial si si si si si si
Módulos Instalación Otros Test Licencia Comunidad Comercial Documentación
si sencilla no si LGPL si parcial buena
si sencilla parcial si MIT si no excelente
si sencilla no si BSD si si buena
si sencilla si si si no buena
no sencilla no no MIT si si buena
si sencilla si si BSD si no buena
si sencilla parcial parcial MIT si si regular
QPHP no sencilla no no MIT si no pobre
si sencilla si si BSD si si buena
si sencilla si si MIT si si excelente
si sencilla no no BSD si si excelente
Multi BB.BB.
Akelos PHP
CakePHP
CodeIgniter
Kohana
PHP on Trax
Openbiz
Qcodo
Seagull
Symfony
Zend
Akelos PHP
CakePHP
CodeIgniter
Kohana Kohana
PHP on Trax
Openbiz
Qcodo
Seagull
Symfony
Zend
Estudio de frameworks MVC en PHP5
● La elección: Symfony
– Utilización: segundo a nivel mundial, primero en
Europa (información de google trends).
– Soporte comercial (Sensio).
– Mantenimiento largo de versiones, y migraciones a
futuras (roadmap).
– PHP5 y PHP6 para futuras versiones.
– Sistema de plugins robusto y extenso (comunidad
muy activa).
– Comunidad hispana muy activa.
Estudio de frameworks MVC en PHP5
$ symfony init-project pfc_agritos
Implementación de la aplicación: Symfony
1.- Proyecto
2.- Aplicaciones
3.- Configuración
4.- Modelo de datos
5.- Nuestras clases
6.- Módulos
PFC_AGRITOS
apps
lib
log
config
cache
web
$ symfony init-app frontend
Implementación de la aplicación: Symfony
1.- Proyecto
2.- Aplicaciones
3.- Configuración
4.- Modelo de datos
5.- Nuestras clases
6.- Módulos
apps
backendfrontend
web
index.php
frontend_dev.php
Proyecto
Implementación de la aplicación: Symfony
1.- Proyecto
2.- Aplicaciones
3.- Configuración
4.- Modelo de datos
5.- Nuestras clases
6.- Módulos
YAML Aplicación
Módulo
ORM
Base de datos
Variables
Logs
Cache
Filtros
Enrutados
Seguridad
Vista
Validación
Generador
automático
Implementación de la aplicación: Symfony
1.- Proyecto
2.- Aplicaciones
3.- Configuración
4.- Modelo de datos
5.- Nuestras clases
6.- Módulos
$ symfony propel-build-model
Modelo Entidad Relación
Esquema (YAML - XML)
Clases del dominio
Clases
Base
Clases
personalizables
Implementación de la aplicación: Symfony
1.- Proyecto
2.- Aplicaciones
3.- Configuración
4.- Modelo de datos
5.- Nuestras clases
6.- Módulos
Proyecto
Validación
Modelo de datos
Helpers
Clases propias
Implementación de la aplicación: Symfony
1.- Proyecto
2.- Aplicaciones
3.- Configuración
4.- Modelo de datos
5.- Nuestras clases
6.- Módulos
Publica
Privada $ symfony propel-init-admin
$ symfony init-module
Validación de entrada de datos
Estructura completa
No genera acciones
No genera vistas
Estructura básica
Genera acciones (CRUD) y vistas
con archivos de configuración
Demo: crear noticia a boletín
Demo: asignar noticia a boletín
Demo: envío de un boletín
● Facilidad para reutilizar y extender.
● Symfony facilita el ciclo desarrollo (y despliegue)
de los proyectos.
● Diferentes clientes de correo electrónico
soportados y probados.
● Lanzamiento de la versión 0.9 en febrero del 2009.
Conclusiones
● Versión 1.0: peticiones de nuevas funcionalidades y
mejoras por parte de "la comunidad" a la versión inicial
0.9.
● Versión 1.5: convertir AGritos! en un plugin de Symfony,
migración a Symfony 1.2.
● Versión 2.0: integrar un sistema de temas para el portal y
uno de plantillas para los boletines.
Ampliaciones

More Related Content

What's hot

Charla evento TestingUY 2017 - Desafíos y Beneficios de implementar un Framew...
Charla evento TestingUY 2017 - Desafíos y Beneficios de implementar un Framew...Charla evento TestingUY 2017 - Desafíos y Beneficios de implementar un Framew...
Charla evento TestingUY 2017 - Desafíos y Beneficios de implementar un Framew...TestingUy
 
Fase Codificación
Fase CodificaciónFase Codificación
Fase CodificaciónjohannaAC
 
estructura condicional y selenctiva
estructura condicional y selenctivaestructura condicional y selenctiva
estructura condicional y selenctivak_tire cango
 
Puebas y Mantenimiento de Software
Puebas y Mantenimiento de SoftwarePuebas y Mantenimiento de Software
Puebas y Mantenimiento de SoftwareAlonso Marturet
 

What's hot (8)

Taller de laravel
Taller de laravelTaller de laravel
Taller de laravel
 
Charla evento TestingUY 2017 - Desafíos y Beneficios de implementar un Framew...
Charla evento TestingUY 2017 - Desafíos y Beneficios de implementar un Framew...Charla evento TestingUY 2017 - Desafíos y Beneficios de implementar un Framew...
Charla evento TestingUY 2017 - Desafíos y Beneficios de implementar un Framew...
 
Fase Codificación
Fase CodificaciónFase Codificación
Fase Codificación
 
Dn11 u3 a26_cmr
Dn11 u3 a26_cmrDn11 u3 a26_cmr
Dn11 u3 a26_cmr
 
estructura condicional y selenctiva
estructura condicional y selenctivaestructura condicional y selenctiva
estructura condicional y selenctiva
 
Puebas y Mantenimiento de Software
Puebas y Mantenimiento de SoftwarePuebas y Mantenimiento de Software
Puebas y Mantenimiento de Software
 
Anexo 24 leon
Anexo 24 leonAnexo 24 leon
Anexo 24 leon
 
Introducción a Struts 2
Introducción a Struts 2Introducción a Struts 2
Introducción a Struts 2
 

Viewers also liked

Presentación Framework CodeIgniter
Presentación Framework CodeIgniter Presentación Framework CodeIgniter
Presentación Framework CodeIgniter ADWE Team
 
DESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBDESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBJavier Condori Flores
 
Iniciación PHP 5. Programación Web
Iniciación PHP 5. Programación WebIniciación PHP 5. Programación Web
Iniciación PHP 5. Programación WebRightster
 
Iniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónIniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónRightster
 
Iniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosIniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosRightster
 
Silex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHPSilex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHPJavier Eguiluz
 
Iniciación PHP 5. Ejercicios
Iniciación PHP 5. EjerciciosIniciación PHP 5. Ejercicios
Iniciación PHP 5. EjerciciosRightster
 
Introduccion al Akelos Php Framework
Introduccion al Akelos Php FrameworkIntroduccion al Akelos Php Framework
Introduccion al Akelos Php FrameworkBermi Ferrer
 
Iniciación PHP 5. Arquitectura cliente/servidor
Iniciación PHP 5. Arquitectura cliente/servidorIniciación PHP 5. Arquitectura cliente/servidor
Iniciación PHP 5. Arquitectura cliente/servidorRightster
 
Iniciación PHP 5. Ejemplos
Iniciación PHP 5. EjemplosIniciación PHP 5. Ejemplos
Iniciación PHP 5. EjemplosRightster
 
Desarrollo de una interfaz Web de consulta y análisis de datos en Bioinformat...
Desarrollo de una interfaz Web de consulta y análisis de datos en Bioinformat...Desarrollo de una interfaz Web de consulta y análisis de datos en Bioinformat...
Desarrollo de una interfaz Web de consulta y análisis de datos en Bioinformat...Javier Condori Flores
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRJuan Belón Pérez
 
Estudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAEstudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAHelmilpa
 
Iniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQLIniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQLRightster
 
Beyond Virtualisation
Beyond VirtualisationBeyond Virtualisation
Beyond VirtualisationRightster
 

Viewers also liked (20)

Pucela testingdays testing_en_php
Pucela testingdays testing_en_phpPucela testingdays testing_en_php
Pucela testingdays testing_en_php
 
MVC
MVCMVC
MVC
 
Presentación Framework CodeIgniter
Presentación Framework CodeIgniter Presentación Framework CodeIgniter
Presentación Framework CodeIgniter
 
DESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEBDESARROLLO RAPIDO DE APLICACIONES WEB
DESARROLLO RAPIDO DE APLICACIONES WEB
 
Iniciación PHP 5. Programación Web
Iniciación PHP 5. Programación WebIniciación PHP 5. Programación Web
Iniciación PHP 5. Programación Web
 
MODELO VISTA CONTROLADOR EN PHP
MODELO VISTA CONTROLADOR EN PHPMODELO VISTA CONTROLADOR EN PHP
MODELO VISTA CONTROLADOR EN PHP
 
Curso php y_my_sql
Curso php y_my_sqlCurso php y_my_sql
Curso php y_my_sql
 
Iniciación PHP 5. Introducción
Iniciación PHP 5. IntroducciónIniciación PHP 5. Introducción
Iniciación PHP 5. Introducción
 
Iniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosIniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a Objetos
 
Silex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHPSilex, desarrollo web ágil y profesional con PHP
Silex, desarrollo web ágil y profesional con PHP
 
Iniciación PHP 5. Ejercicios
Iniciación PHP 5. EjerciciosIniciación PHP 5. Ejercicios
Iniciación PHP 5. Ejercicios
 
Introduccion al Akelos Php Framework
Introduccion al Akelos Php FrameworkIntroduccion al Akelos Php Framework
Introduccion al Akelos Php Framework
 
Iniciación PHP 5. Arquitectura cliente/servidor
Iniciación PHP 5. Arquitectura cliente/servidorIniciación PHP 5. Arquitectura cliente/servidor
Iniciación PHP 5. Arquitectura cliente/servidor
 
Iniciación PHP 5. Ejemplos
Iniciación PHP 5. EjemplosIniciación PHP 5. Ejemplos
Iniciación PHP 5. Ejemplos
 
Desarrollo de una interfaz Web de consulta y análisis de datos en Bioinformat...
Desarrollo de una interfaz Web de consulta y análisis de datos en Bioinformat...Desarrollo de una interfaz Web de consulta y análisis de datos en Bioinformat...
Desarrollo de una interfaz Web de consulta y análisis de datos en Bioinformat...
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 
Estudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVAEstudio comparativo de PHP, ASP.NET Y JAVA
Estudio comparativo de PHP, ASP.NET Y JAVA
 
9.laravel
9.laravel9.laravel
9.laravel
 
Iniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQLIniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQL
 
Beyond Virtualisation
Beyond VirtualisationBeyond Virtualisation
Beyond Virtualisation
 

Similar to Implementación MVC de un sistema de boletines electrónicos en PHP con Symfony

Introducción a los Frameworks PHP
Introducción a los Frameworks PHP  Introducción a los Frameworks PHP
Introducción a los Frameworks PHP Aprende PHP
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosGeorge Navarro Gomez
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosGeorge Navarro Gomez
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyJorge Antonio Linares Vera
 
Desarrollo de Aplicaciones Web con Symfony 5/10/2011
Desarrollo de Aplicaciones Web con Symfony 5/10/2011Desarrollo de Aplicaciones Web con Symfony 5/10/2011
Desarrollo de Aplicaciones Web con Symfony 5/10/2011gorolabs
 
Presentación Proyecto Fin Carrera #SagaPFC
Presentación Proyecto Fin Carrera #SagaPFCPresentación Proyecto Fin Carrera #SagaPFC
Presentación Proyecto Fin Carrera #SagaPFCLuis Pérez Alcaide
 
CURSO APLICACIONES WEB
CURSO APLICACIONES WEBCURSO APLICACIONES WEB
CURSO APLICACIONES WEBSkynet Erp
 
Web framework ligeros y micros en java barcamp 2014
Web framework ligeros y micros en java   barcamp 2014Web framework ligeros y micros en java   barcamp 2014
Web framework ligeros y micros en java barcamp 2014Carlos Camacho
 
Desarrollo de Aplicaciones Web II - Sesión 01 - Introducción
Desarrollo de Aplicaciones Web II - Sesión 01 - IntroducciónDesarrollo de Aplicaciones Web II - Sesión 01 - Introducción
Desarrollo de Aplicaciones Web II - Sesión 01 - IntroducciónDidier Granados
 
Qué puede aprender Drupal de Plone
Qué puede aprender Drupal de PloneQué puede aprender Drupal de Plone
Qué puede aprender Drupal de Plonementtes
 
Buenas Prácticas de Desarrollo para la Adecuación de CMS bajo Software Libre
Buenas Prácticas de Desarrollo para la Adecuación de CMS bajo Software LibreBuenas Prácticas de Desarrollo para la Adecuación de CMS bajo Software Libre
Buenas Prácticas de Desarrollo para la Adecuación de CMS bajo Software LibreLucio Marcelo Quispe Ortega
 
Zend Framework - MVC - 2008
Zend Framework - MVC - 2008Zend Framework - MVC - 2008
Zend Framework - MVC - 2008Juan Carbajal
 
Mejores a nuestros proyectos de Software
Mejores a nuestros proyectos de SoftwareMejores a nuestros proyectos de Software
Mejores a nuestros proyectos de SoftwareJose Luis Bugarin Peche
 
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularDesarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularFreelancer
 

Similar to Implementación MVC de un sistema de boletines electrónicos en PHP con Symfony (20)

Introducción a los Frameworks PHP
Introducción a los Frameworks PHP  Introducción a los Frameworks PHP
Introducción a los Frameworks PHP
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales Conceptos
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales Conceptos
 
Desarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademyDesarrollo rápido de apps web con laravel - DevAcademy
Desarrollo rápido de apps web con laravel - DevAcademy
 
Desarrollo de Aplicaciones Web con Symfony 5/10/2011
Desarrollo de Aplicaciones Web con Symfony 5/10/2011Desarrollo de Aplicaciones Web con Symfony 5/10/2011
Desarrollo de Aplicaciones Web con Symfony 5/10/2011
 
Presentación Proyecto Fin Carrera #SagaPFC
Presentación Proyecto Fin Carrera #SagaPFCPresentación Proyecto Fin Carrera #SagaPFC
Presentación Proyecto Fin Carrera #SagaPFC
 
Python Gae django
Python Gae djangoPython Gae django
Python Gae django
 
demoDAAW.ppt
demoDAAW.pptdemoDAAW.ppt
demoDAAW.ppt
 
Introducción a Silex
Introducción a SilexIntroducción a Silex
Introducción a Silex
 
CURSO APLICACIONES WEB
CURSO APLICACIONES WEBCURSO APLICACIONES WEB
CURSO APLICACIONES WEB
 
Taller de zan php
Taller de zan phpTaller de zan php
Taller de zan php
 
JS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World ExampleJS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World Example
 
Mvc
MvcMvc
Mvc
 
Web framework ligeros y micros en java barcamp 2014
Web framework ligeros y micros en java   barcamp 2014Web framework ligeros y micros en java   barcamp 2014
Web framework ligeros y micros en java barcamp 2014
 
Desarrollo de Aplicaciones Web II - Sesión 01 - Introducción
Desarrollo de Aplicaciones Web II - Sesión 01 - IntroducciónDesarrollo de Aplicaciones Web II - Sesión 01 - Introducción
Desarrollo de Aplicaciones Web II - Sesión 01 - Introducción
 
Qué puede aprender Drupal de Plone
Qué puede aprender Drupal de PloneQué puede aprender Drupal de Plone
Qué puede aprender Drupal de Plone
 
Buenas Prácticas de Desarrollo para la Adecuación de CMS bajo Software Libre
Buenas Prácticas de Desarrollo para la Adecuación de CMS bajo Software LibreBuenas Prácticas de Desarrollo para la Adecuación de CMS bajo Software Libre
Buenas Prácticas de Desarrollo para la Adecuación de CMS bajo Software Libre
 
Zend Framework - MVC - 2008
Zend Framework - MVC - 2008Zend Framework - MVC - 2008
Zend Framework - MVC - 2008
 
Mejores a nuestros proyectos de Software
Mejores a nuestros proyectos de SoftwareMejores a nuestros proyectos de Software
Mejores a nuestros proyectos de Software
 
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularDesarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
 

Recently uploaded

Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdflauradbernals
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfisrael garcia
 
Unidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucionesUnidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucioneschorantina325
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdfedwinmelgarschlink2
 
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señorkkte210207
 
Las redes sociales en el mercado digital
Las redes sociales en el mercado digitalLas redes sociales en el mercado digital
Las redes sociales en el mercado digitalNayaniJulietaRamosRa
 

Recently uploaded (6)

Guia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdfGuia para el registro en el sitio slideshare.pdf
Guia para el registro en el sitio slideshare.pdf
 
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdfNUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
NUVO PROGRAMAS DE ESCUELAS NUEVO-ACUERDO-CTE.pdf
 
Unidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disolucionesUnidad V. Disoluciones quimica de las disoluciones
Unidad V. Disoluciones quimica de las disoluciones
 
12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf12 Clasificacion de las Computadoras.pdf
12 Clasificacion de las Computadoras.pdf
 
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
02. Mr. Spencer (T.L. Sawn).pdf.libro de un señor
 
Las redes sociales en el mercado digital
Las redes sociales en el mercado digitalLas redes sociales en el mercado digital
Las redes sociales en el mercado digital
 

Implementación MVC de un sistema de boletines electrónicos en PHP con Symfony

  • 1. AGritos!: Estudio y aplicación práctica de frameworks MVC en PHP5 Autores Sergio Enjuto Méndez Isidro Merayo Castellano Tutor F. Javier Pérez García
  • 2. Índice ● Introducción. ● AGritos! un sistema de boletines electrónicos. ● Estudio frameworks MVC en PHP5. ● Implementación de la aplicación. ● Demo de la aplicación ● Conclusiones ● Ampliaciones
  • 3. ● Objetivos del proyecto. – Definir las funcionalidades y necesidades. – Estudio de frameworks MVC en PHP5. – Implementar el proyecto utilizando un framework. ● Tecnologías y herramientas utilizadas – LAMP/WAMP (Linux/Windows, Apache, MySQL y PHP) – StarUML – Eclipse PDT (PHP Development Tools) – Subversion Introducción
  • 4. AGritos! un sistema de boletines electrónicos ● Introducción. – Desarrollo de una nueva aplicación web: un sistema de boletines. – Módulos: ● Usuarios ● Suscriptores ● Boletines ● Temáticas ● Secciones ● Noticias ● Categorías
  • 5. ● Requisitos y especificaciones. – La aplicación dispondrá de un área privada. ● Cada boletín en concreto estará formado por un número de boletín y por una temática. ● Cada temática la podremos subdividir en un conjunto de secciones. ● A cada sección de cada boletín se asignaran un conjunto de noticias. ● Sistema de envío de correos electrónicos. AGritos! un sistema de boletines electrónicos Boletín: número + temática Sección 2Sección 1 Noticia 3 Noticia 2 Noticia 1 Noticia 4
  • 6. AGritos! un sistema de boletines electrónicos ● Requisitos y especificaciones (cont). – Un área pública: ● Suscripción a los servicios del portal. ● Visualización de boletines y noticias. – Disponer de un sistema multilingüe Bienvenido al portal AGritos! Welcome to the site of AGritos! Herzlich Willkommen bei AGritos!
  • 10. ● Características analizadas – Múltiples BB.DD. – ORM (Object-Relational mapping). – Internacionalización (i18n) y localización (l10n). – Sistema de Plantillas/Templates. – Sistemas de Caché. – Validación. – AJAX. – Seguridad. Estudio de frameworks MVC en PHP5
  • 11. ● Características analizadas (cont.) – Módulos. – Instalación. – Integración con otros frameworks. – Test de pruebas unitarias y funcionales. – Licencia del framework. – Soporte Comunidad. – Soporte Comercial. – Documentación. Estudio de frameworks MVC en PHP5
  • 12. ● Frameworks elegidos a analizar Estudio de frameworks MVC en PHP5
  • 13. ORM I18n / l10n Plantillas Caché Validación AJAX Seguridad parcial parcial si si si parcial si no si si parcial si si si si parcial si si si no si si si si si si si si si si si si si si no no no si si no si si si si si si si si si si parcial no no si si si QPHP si no no si si si si parcial si si si si si si si si si si si si si si si si si parcial si si si si si si Módulos Instalación Otros Test Licencia Comunidad Comercial Documentación si sencilla no si LGPL si parcial buena si sencilla parcial si MIT si no excelente si sencilla no si BSD si si buena si sencilla si si si no buena no sencilla no no MIT si si buena si sencilla si si BSD si no buena si sencilla parcial parcial MIT si si regular QPHP no sencilla no no MIT si no pobre si sencilla si si BSD si si buena si sencilla si si MIT si si excelente si sencilla no no BSD si si excelente Multi BB.BB. Akelos PHP CakePHP CodeIgniter Kohana PHP on Trax Openbiz Qcodo Seagull Symfony Zend Akelos PHP CakePHP CodeIgniter Kohana Kohana PHP on Trax Openbiz Qcodo Seagull Symfony Zend Estudio de frameworks MVC en PHP5
  • 14. ● La elección: Symfony – Utilización: segundo a nivel mundial, primero en Europa (información de google trends). – Soporte comercial (Sensio). – Mantenimiento largo de versiones, y migraciones a futuras (roadmap). – PHP5 y PHP6 para futuras versiones. – Sistema de plugins robusto y extenso (comunidad muy activa). – Comunidad hispana muy activa. Estudio de frameworks MVC en PHP5
  • 15. $ symfony init-project pfc_agritos Implementación de la aplicación: Symfony 1.- Proyecto 2.- Aplicaciones 3.- Configuración 4.- Modelo de datos 5.- Nuestras clases 6.- Módulos PFC_AGRITOS apps lib log config cache web
  • 16. $ symfony init-app frontend Implementación de la aplicación: Symfony 1.- Proyecto 2.- Aplicaciones 3.- Configuración 4.- Modelo de datos 5.- Nuestras clases 6.- Módulos apps backendfrontend web index.php frontend_dev.php
  • 17. Proyecto Implementación de la aplicación: Symfony 1.- Proyecto 2.- Aplicaciones 3.- Configuración 4.- Modelo de datos 5.- Nuestras clases 6.- Módulos YAML Aplicación Módulo ORM Base de datos Variables Logs Cache Filtros Enrutados Seguridad Vista Validación Generador automático
  • 18. Implementación de la aplicación: Symfony 1.- Proyecto 2.- Aplicaciones 3.- Configuración 4.- Modelo de datos 5.- Nuestras clases 6.- Módulos $ symfony propel-build-model Modelo Entidad Relación Esquema (YAML - XML) Clases del dominio Clases Base Clases personalizables
  • 19. Implementación de la aplicación: Symfony 1.- Proyecto 2.- Aplicaciones 3.- Configuración 4.- Modelo de datos 5.- Nuestras clases 6.- Módulos Proyecto Validación Modelo de datos Helpers Clases propias
  • 20. Implementación de la aplicación: Symfony 1.- Proyecto 2.- Aplicaciones 3.- Configuración 4.- Modelo de datos 5.- Nuestras clases 6.- Módulos Publica Privada $ symfony propel-init-admin $ symfony init-module Validación de entrada de datos Estructura completa No genera acciones No genera vistas Estructura básica Genera acciones (CRUD) y vistas con archivos de configuración
  • 21. Demo: crear noticia a boletín
  • 22. Demo: asignar noticia a boletín
  • 23. Demo: envío de un boletín
  • 24. ● Facilidad para reutilizar y extender. ● Symfony facilita el ciclo desarrollo (y despliegue) de los proyectos. ● Diferentes clientes de correo electrónico soportados y probados. ● Lanzamiento de la versión 0.9 en febrero del 2009. Conclusiones
  • 25. ● Versión 1.0: peticiones de nuevas funcionalidades y mejoras por parte de "la comunidad" a la versión inicial 0.9. ● Versión 1.5: convertir AGritos! en un plugin de Symfony, migración a Symfony 1.2. ● Versión 2.0: integrar un sistema de temas para el portal y uno de plantillas para los boletines. Ampliaciones