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

Post on 20-Jan-2015

6.493 Views

Category:

Education

3 Downloads

Preview:

Click to see full reader

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

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/

top related