Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Desarrollo rápido con PHP y Symfony(I) Introducción a Symfony
David J. Brenes Martínez
Curso de Extensión UniversitariaDesarrollo web avanzado
Universidad de Oviedo
2010/03/22
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Desarrollo habitual
Estructura ad-hoc de directoriosDirectorios de código públicos (die, con suerte)La configuración es otro fichero PHPCódigo Spaguetti
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Y llegan los detractores
PHP es un lenguaje pobrePHP no es apto para proyectos a gran escalaPHP no es manteniblePHP genera proyectos ‘basura’
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Y llegan los detractores
PHP es un lenguaje pobrePHP no es apto para proyectos a gran escalaPHP no es manteniblePHP genera proyectos ‘basura’
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Primera ley de la informática
Muéstrame a alguien que programe mal en PHP y temostraré a alguien que programa mal.
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Segunda ley de la informática
Todo escala
FacebookTuentiYahoo!...
Pero hay que hacerlo bien
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
La llegada de los frameworks
Desarrollo web menos ad-hocPopularización de patrones de diseño, buenasprácticas. . .Incremento de exigencia en desarrollo webAparición de soluciones avanzadas
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
La llegada de los frameworks
StrutsZendCakePHPSpringRuby on Rails
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
La llegada de Symfony
Proyecto comercial de SensioLabs (Sensio Framework)Liberación e inicio del proyecto Symfony en 20051 año más tarde que Rails
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Inspiración
Basado en conceptos de otros frameworks (Rails,Spring, Django. . . )Actualmente comparte características con otrosframeworks (Rails)Uso de otros proyectos PHP (Propel, Doctrine,PHPUnit. . . )
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Proyectos
Yahoo! BookmarksDeliciousDailyMotion
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Componentes
Bibliotecas nacidas del core de SymfonyUsables en cualquier otro proyecto de maner directaParseador de YAMLManejador de eventosGestor de dependenciasSistema de plantillasGestor de peticiones
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
MVC en Symfony
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
MVC en Symfony
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Controlador
1 Servidor Web captura la petición2 La redirige al punto de entrada (index.php) con
parámetros3 index.php inicia el controlador4 El controlador decide a qué acción corresponde la ruta
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Modelo
1 La acción (controlador) solicita unos datos al modelo2 La acción realiza modificaciones al modelo3 El modelo persiste esas modificaciones si la acción lo
solicita4 La acción pasa esos del modelo a la vista
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Vista
1 La vista no tiene lógica de proceso2 Solo genera HTML en base a los datos que recibe3 La acción decide que vista se genera y con qué
parámetros4 Una vez que la vista termina, el controlador le devuelve
el resultado
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Descarguemos Symfony
www.symfony-project.org
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Directorios
apps: Un directorio para cada aplicación posible dentrode Symfonycache: Ficheros para la cachéconfig: Ficheros de configuracióndata: Ficheros de datos variados como fixtureslib: Ficheros de código global a las aplicaciones (elmodelo, software ajeno a Symfony. . . )log: Ficheros de logplugins: Plugins añadidos a Symfonytests: Suite de tests de la aplicaciónweb: Carpeta pública
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Aplicaciones
Symfony permite tener conviviendo varias aplicacionesen un proyectoAplicaciones que comparten modelo, base de usuarios,etc.Ejemplo típico: Frontend / Backend / APIAplicaciones independientes (incluso dominiosdistintos)
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Módulos
Cada aplicación tiene varios módulosLos módulos permiten separar aspectos de laaplicaciónCada módulo puede tener configuracion diferente
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Lib
model: El código del modelo (VOs, DAOs yFormularios)helpers: conjunto de funciones de ayudavendor: Codigo ajeno al framework (o el propioframework)
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Plugins
Miniaplicaciones autocontenidas.Su propia configuración, sus propios modelos.Se mantienen en repositorios aparte (análogo a lasgemas de Rails)
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Web
Única carpeta que debería tener acceso público.Contiene los entornos de las aplicacionesindex.php: Entorno por defecto para la aplicación pordefecto
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Despliegue
Apuntar en Apache a la carpeta webCopiar carpeta /lib/vendor/symfony/data/web/sf a lacarpeta webVisitar entorno de producciónVisitar entorno de depuración
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Prueba rápida
Descargar schema.ymlDescargar databases.ymlActivar driver MySQL (extension=php_pdo_mysql.dll)Unas cuantas tareas
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
No solo una aplicación web
Symfony.bat en el raizConsola de órdenes para SymfonyAutomatización de tareas
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Tareas del proyecto
Generar aplicacionesGenerar módulosGenerar otro proyecto
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Tareas del modelo
Gestionar BDCargar datos de pruebaManejar el modelo
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Tareas de plugins
ListarInstalar plugins nuevosActualizar
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Tarea de caché
symfony cache:clearSymfony dispone de cachéSe cachean cosas importantes (configuración, vistas,modelos. . . )En entorno de producción la caché es más agresivaSi algo nocambia, cache:clear
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
¿Configuration over convention?
Convention over configuration: Uso de convencionespara evitar configuraciones explícitasMenos cantidad de trabajoMás magia y potenciaMás necesidad de memoria
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
¿Configuration over convention?
Symfony confia más en ficheros de configuraciónPHP es menos flexible que RubyPHP permite menos magia
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
YAML: YAML Ain’t Markup Language
Formato de representación de datos alternativo a XMLy JSONBasado en espacios para indentar configuracionesFormato muy legible y sencillo
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
YAML en Symfony
Todos los ficheros de configuración son YAMLComponente de Symfony para parseo de YAML
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Niveles de configuración
Configuración de SymfonyConfiguración de PluginsConfigración de proyectoConfiguración de aplicaciónConfiguracion de módulo
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Entornos de configuración
Configuración específica para entornos de desarrollo,producción y testPermiten cambiar de entorno a placer
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Settings.yml
Cuestiones generales sobre el proyecto y lasaplicacionesCodificación de caracteresCuestiones de seguridadPáginas de error
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Factories.yml
Configuración para objetos necesitados por elframework (caché, i18n. . . )Permite cargar objetos en el core de Symfonycambiando el comportamientoEjemplos: Nuevos sistemas de caché, i18n en Base deDatos. . .
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Databases.yml
Define la configuración de conexion a BDPermite definir conexiones diferentes para cadaentorno
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Security.yml
Define aspectos más concretos de seguridadPermite asegurar acciones en concreto
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Security.yml
Define aspectos más concretos de seguridadPermite asegurar acciones en concreto
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Routing.yml
Configura el sistema de rutasLa configuración va en cascada. La primera ruta quecoincide es la que se usa.
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
App.yml
Configuración específica de una aplicaciónPermite definir parámetros propiosUsado por los plugins para definir su propiaconfiguración
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
filters.yml
Define los filtros por los que debe pasar la Requestpara ecutarsePermite pasar parámetros a los filtros
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
view.yml
Define la configuracion de las vistasPermite cargar CSS, JS, definir elementos meta, títulosde página. . .
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Referencias
Symfony Project: www.symfony-project.orgThe Symfony Reference Book: http://www.symfony-project.org/reference/1_4/en/
Practical Symfony:http://www.symfony-project.org/jobeet/1_4/Doctrine/en/
The Definitive Guide to symfony:http://www.symfony-project.org/book/1_2/
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Créditos
La imagen de MVC está sacada de Practical Symfony
Symfony
David J.Brenes
Martínez
IntroducingSymfony
MVC enSymfony
UnaaplicaciónSymfony
ConsolaSymfony
Sistema deconfiguración
Referencias,Créditos yLicencia
Licencia
Estas transparencias se publican bajo licencia CreativeCommons y se pueden redistribuir o modificar bajo lassiguientes condiciones:
Se dé reconocimiento al autor de estas transparencias.No se use con propósitos comerciales.Se distribuya con la misma licencia.
Texto de la licencia: http://creativecommons.org/licenses/by-nc-sa/3.0/