desarrollo rápido con php y symfony (i): introducción a symfony

49
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 Desarrollo rápido con PHP y Symfony (I) Introducción a Symfony David J. Brenes Martínez Curso de Extensión Universitaria Desarrollo web avanzado Universidad de Oviedo 2010/03/22

Upload: david-j-brenes

Post on 20-Jan-2015

6.490 views

Category:

Education


3 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 2: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 3: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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’

Page 4: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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’

Page 5: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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.

Page 6: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 7: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 8: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 9: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 10: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 11: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

Symfony

David J.Brenes

Martínez

IntroducingSymfony

MVC enSymfony

UnaaplicaciónSymfony

ConsolaSymfony

Sistema deconfiguración

Referencias,Créditos yLicencia

Proyectos

Yahoo! BookmarksDeliciousDailyMotion

Page 12: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 13: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

Symfony

David J.Brenes

Martínez

IntroducingSymfony

MVC enSymfony

UnaaplicaciónSymfony

ConsolaSymfony

Sistema deconfiguración

Referencias,Créditos yLicencia

MVC en Symfony

Page 14: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

Symfony

David J.Brenes

Martínez

IntroducingSymfony

MVC enSymfony

UnaaplicaciónSymfony

ConsolaSymfony

Sistema deconfiguración

Referencias,Créditos yLicencia

MVC en Symfony

Page 15: Desarrollo rápido con PHP y Symfony (I): Introducción a 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

Page 16: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 17: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 18: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 19: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 20: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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)

Page 21: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 22: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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)

Page 23: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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)

Page 24: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 25: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 26: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 27: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 28: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 29: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 30: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 31: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 32: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 33: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 34: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 35: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 36: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 37: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 38: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 39: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 40: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 41: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 42: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 43: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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.

Page 44: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 45: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 46: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 47: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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/

Page 48: Desarrollo rápido con PHP y Symfony (I): Introducción a Symfony

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

Page 49: Desarrollo rápido con PHP y Symfony (I): Introducción a 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/