AGritos!: Estudio y aplicación práctica de frameworks MVC en PHP5.
Presentación del Proyecto Fin de Carrera de I.T. Informática de Gestión de la ETS de Ingeniería Informática de la Universidad de Valladolid.
Sergio Enjuto Méndez
Isidro Merayo Castellano
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
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
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