Introducción al framework de desarrollo Symfony, explicando la estructura de una aplicación Symfony, el funcionamiento de su consola y detalles de su configuración
Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony
1. Symfony
David J.
Brenes
Martínez
Desarrollo rápido con PHP y Symfony Introducing
Symfony
(I) Introducción a Symfony MVC en
Symfony
Una
aplicación
David J. Brenes Martínez Symfony
Consola
Symfony
Curso de Extensión Universitaria
Sistema de
Desarrollo web avanzado configuración
Universidad de Oviedo
Referencias,
Créditos y
Licencia
2010/03/22
2. Desarrollo habitual
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
Estructura ad-hoc de directorios MVC en
Symfony
Directorios de código públicos (die, con suerte) Una
aplicación
La configuración es otro fichero PHP Symfony
Consola
Código Spaguetti Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
3. Y llegan los detractores
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
PHP es un lenguaje pobre MVC en
Symfony
PHP no es apto para proyectos a gran escala Una
aplicación
PHP no es mantenible Symfony
Consola
PHP genera proyectos ‘basura’ Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
4. Y llegan los detractores
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
PHP es un lenguaje pobre MVC en
Symfony
PHP no es apto para proyectos a gran escala Una
aplicación
PHP no es mantenible Symfony
Consola
PHP genera proyectos ‘basura’ Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
5. Primera ley de la informática
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Symfony
Muéstrame a alguien que programe mal en PHP y te Una
aplicación
mostraré a alguien que programa mal. Symfony
Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
6. Segunda ley de la informática
Symfony
David J.
Brenes
Martínez
Todo escala Introducing
Symfony
MVC en
Symfony
Facebook
Una
Tuenti aplicación
Symfony
Yahoo! Consola
Symfony
... Sistema de
configuración
Pero hay que hacerlo bien Referencias,
Créditos y
Licencia
7. La llegada de los frameworks
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
Desarrollo web menos ad-hoc MVC en
Symfony
Popularización de patrones de diseño, buenas
Una
prácticas. . . aplicación
Symfony
Incremento de exigencia en desarrollo web Consola
Symfony
Aparición de soluciones avanzadas
Sistema de
configuración
Referencias,
Créditos y
Licencia
8. La llegada de los frameworks
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
Struts
MVC en
Symfony
Zend
Una
CakePHP aplicación
Symfony
Spring Consola
Symfony
Ruby on Rails Sistema de
configuración
Referencias,
Créditos y
Licencia
9. La llegada de Symfony
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Proyecto comercial de SensioLabs (Sensio Framework) Symfony
Una
Liberación e inicio del proyecto Symfony en 2005 aplicación
Symfony
1 año más tarde que Rails Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
10. Inspiración
Symfony
David J.
Brenes
Martínez
Introducing
Basado en conceptos de otros frameworks (Rails, Symfony
MVC en
Spring, Django. . . ) Symfony
Actualmente comparte características con otros Una
aplicación
frameworks (Rails) Symfony
Consola
Uso de otros proyectos PHP (Propel, Doctrine, Symfony
PHPUnit. . . ) Sistema de
configuración
Referencias,
Créditos y
Licencia
11. Proyectos
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Yahoo! Bookmarks Symfony
Una
Delicious aplicación
Symfony
DailyMotion Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
12. Componentes
Symfony
David J.
Brenes
Martínez
Bibliotecas nacidas del core de Symfony Introducing
Symfony
Usables en cualquier otro proyecto de maner directa MVC en
Symfony
Parseador de YAML Una
aplicación
Manejador de eventos Symfony
Gestor de dependencias Consola
Symfony
Sistema de plantillas Sistema de
configuración
Gestor de peticiones Referencias,
Créditos y
Licencia
13. MVC en Symfony
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Symfony
Una
aplicación
Symfony
Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
14. MVC en Symfony
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Symfony
Una
aplicación
Symfony
Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
15. Controlador
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
1 Servidor Web captura la petición MVC en
Symfony
2 La redirige al punto de entrada (index.php) con
Una
parámetros aplicación
Symfony
3 index.php inicia el controlador Consola
Symfony
4 El controlador decide a qué acción corresponde la ruta
Sistema de
configuración
Referencias,
Créditos y
Licencia
16. Modelo
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
1 La acción (controlador) solicita unos datos al modelo MVC en
Symfony
2 La acción realiza modificaciones al modelo
Una
3 El modelo persiste esas modificaciones si la acción lo aplicación
Symfony
solicita Consola
Symfony
4 La acción pasa esos del modelo a la vista
Sistema de
configuración
Referencias,
Créditos y
Licencia
17. Vista
Symfony
David J.
Brenes
Martínez
Introducing
1 La vista no tiene lógica de proceso Symfony
MVC en
2 Solo genera HTML en base a los datos que recibe Symfony
Una
3 La acción decide que vista se genera y con qué aplicación
Symfony
parámetros
Consola
4 Una vez que la vista termina, el controlador le devuelve Symfony
el resultado Sistema de
configuración
Referencias,
Créditos y
Licencia
18. Descarguemos Symfony
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Symfony
Una
www.symfony-project.org aplicación
Symfony
Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
19. Directorios
Symfony
David J.
apps: Un directorio para cada aplicación posible dentro Brenes
Martínez
de Symfony
Introducing
cache: Ficheros para la caché Symfony
config: Ficheros de configuración MVC en
Symfony
data: Ficheros de datos variados como fixtures Una
aplicación
lib: Ficheros de código global a las aplicaciones (el Symfony
Consola
modelo, software ajeno a Symfony. . . ) Symfony
log: Ficheros de log Sistema de
configuración
plugins: Plugins añadidos a Symfony Referencias,
Créditos y
tests: Suite de tests de la aplicación Licencia
web: Carpeta pública
20. Aplicaciones
Symfony
David J.
Brenes
Martínez
Introducing
Symfony permite tener conviviendo varias aplicaciones Symfony
en un proyecto MVC en
Symfony
Aplicaciones que comparten modelo, base de usuarios, Una
etc. aplicación
Symfony
Ejemplo típico: Frontend / Backend / API Consola
Symfony
Aplicaciones independientes (incluso dominios Sistema de
distintos) configuración
Referencias,
Créditos y
Licencia
21. Módulos
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
Cada aplicación tiene varios módulos MVC en
Symfony
Los módulos permiten separar aspectos de la Una
aplicación
aplicación Symfony
Cada módulo puede tener configuracion diferente Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
22. Lib
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
model: El código del modelo (VOs, DAOs y MVC en
Formularios) Symfony
Una
helpers: conjunto de funciones de ayuda aplicación
Symfony
vendor: Codigo ajeno al framework (o el propio Consola
Symfony
framework)
Sistema de
configuración
Referencias,
Créditos y
Licencia
23. Plugins
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
Miniaplicaciones autocontenidas. MVC en
Symfony
Su propia configuración, sus propios modelos. Una
aplicación
Se mantienen en repositorios aparte (análogo a las Symfony
gemas de Rails) Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
24. Web
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
Única carpeta que debería tener acceso público. MVC en
Symfony
Contiene los entornos de las aplicaciones Una
aplicación
index.php: Entorno por defecto para la aplicación por Symfony
Consola
defecto Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
25. Despliegue
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
Apuntar en Apache a la carpeta web MVC en
Symfony
Copiar carpeta /lib/vendor/symfony/data/web/sf a la
Una
carpeta web aplicación
Symfony
Visitar entorno de producción Consola
Symfony
Visitar entorno de depuración
Sistema de
configuración
Referencias,
Créditos y
Licencia
26. Prueba rápida
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
Descargar schema.yml MVC en
Symfony
Descargar databases.yml Una
aplicación
Activar driver MySQL (extension=php_pdo_mysql.dll) Symfony
Consola
Unas cuantas tareas Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
27. No solo una aplicación web
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Symfony.bat en el raiz Symfony
Una
Consola de órdenes para Symfony aplicación
Symfony
Automatización de tareas Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
28. Tareas del proyecto
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Generar aplicaciones Symfony
Una
Generar módulos aplicación
Symfony
Generar otro proyecto Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
29. Tareas del modelo
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Gestionar BD Symfony
Una
Cargar datos de prueba aplicación
Symfony
Manejar el modelo Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
30. Tareas de plugins
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Listar Symfony
Una
Instalar plugins nuevos aplicación
Symfony
Actualizar Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
31. Tarea de caché
Symfony
David J.
Brenes
Martínez
Introducing
symfony cache:clear Symfony
MVC en
Symfony dispone de caché Symfony
Se cachean cosas importantes (configuración, vistas, Una
aplicación
modelos. . . ) Symfony
Consola
En entorno de producción la caché es más agresiva Symfony
Si algo nocambia, cache:clear Sistema de
configuración
Referencias,
Créditos y
Licencia
32. ¿Configuration over convention?
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
Convention over configuration: Uso de convenciones MVC en
para evitar configuraciones explícitas Symfony
Una
Menos cantidad de trabajo aplicación
Symfony
Más magia y potencia Consola
Symfony
Más necesidad de memoria
Sistema de
configuración
Referencias,
Créditos y
Licencia
33. ¿Configuration over convention?
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Symfony confia más en ficheros de configuración Symfony
Una
PHP es menos flexible que Ruby aplicación
Symfony
PHP permite menos magia Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
34. YAML: YAML Ain’t Markup Language
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
Formato de representación de datos alternativo a XML MVC en
Symfony
y JSON Una
aplicación
Basado en espacios para indentar configuraciones Symfony
Formato muy legible y sencillo Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
35. YAML en Symfony
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Symfony
Todos los ficheros de configuración son YAML Una
aplicación
Componente de Symfony para parseo de YAML Symfony
Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
36. Niveles de configuración
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
Configuración de Symfony
MVC en
Symfony
Configuración de Plugins
Una
Configración de proyecto aplicación
Symfony
Configuración de aplicación Consola
Symfony
Configuracion de módulo Sistema de
configuración
Referencias,
Créditos y
Licencia
37. Entornos de configuración
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Configuración específica para entornos de desarrollo, Symfony
producción y test Una
aplicación
Symfony
Permiten cambiar de entorno a placer
Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
38. Settings.yml
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
Cuestiones generales sobre el proyecto y las MVC en
aplicaciones Symfony
Una
Codificación de caracteres aplicación
Symfony
Cuestiones de seguridad Consola
Symfony
Páginas de error
Sistema de
configuración
Referencias,
Créditos y
Licencia
39. Factories.yml
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
Configuración para objetos necesitados por el
MVC en
framework (caché, i18n. . . ) Symfony
Permite cargar objetos en el core de Symfony Una
aplicación
cambiando el comportamiento Symfony
Consola
Ejemplos: Nuevos sistemas de caché, i18n en Base de Symfony
Datos. . . Sistema de
configuración
Referencias,
Créditos y
Licencia
40. Databases.yml
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Define la configuración de conexion a BD Symfony
Una
Permite definir conexiones diferentes para cada aplicación
Symfony
entorno
Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
41. Security.yml
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Symfony
Define aspectos más concretos de seguridad Una
aplicación
Permite asegurar acciones en concreto Symfony
Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
42. Security.yml
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Symfony
Define aspectos más concretos de seguridad Una
aplicación
Permite asegurar acciones en concreto Symfony
Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
43. Routing.yml
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Configura el sistema de rutas Symfony
Una
La configuración va en cascada. La primera ruta que aplicación
Symfony
coincide es la que se usa.
Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
44. App.yml
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
Configuración específica de una aplicación MVC en
Symfony
Permite definir parámetros propios Una
aplicación
Usado por los plugins para definir su propia Symfony
configuración Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
45. filters.yml
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Define los filtros por los que debe pasar la Request Symfony
para ecutarse Una
aplicación
Symfony
Permite pasar parámetros a los filtros
Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
46. view.yml
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Define la configuracion de las vistas Symfony
Una
Permite cargar CSS, JS, definir elementos meta, títulos aplicación
Symfony
de página. . .
Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
47. Referencias
Symfony
David J.
Brenes
Martínez
Symfony Project: www.symfony-project.org Introducing
Symfony
The Symfony Reference Book: http://www. MVC en
symfony-project.org/reference/1_4/en/ Symfony
Una
Practical Symfony: aplicación
Symfony
http://www.symfony-project.org/jobeet/1_
Consola
4/Doctrine/en/ Symfony
Sistema de
The Definitive Guide to symfony: configuración
http://www.symfony-project.org/book/1_2/ Referencias,
Créditos y
Licencia
48. Créditos
Symfony
David J.
Brenes
Martínez
Introducing
Symfony
MVC en
Symfony
La imagen de MVC está sacada de Practical Symfony Una
aplicación
Symfony
Consola
Symfony
Sistema de
configuración
Referencias,
Créditos y
Licencia
49. Licencia
Symfony
David J.
Brenes
Martínez
Estas transparencias se publican bajo licencia Creative Introducing
Commons y se pueden redistribuir o modificar bajo las Symfony
MVC en
siguientes condiciones: Symfony
Se dé reconocimiento al autor de estas transparencias. Una
aplicación
Symfony
No se use con propósitos comerciales.
Consola
Se distribuya con la misma licencia. Symfony
Sistema de
Texto de la licencia: http: configuración
//creativecommons.org/licenses/by-nc-sa/3.0/ Referencias,
Créditos y
Licencia