Está en la página 1de 49

Symfony David J.

Brenes Martnez

Desarrollo rpido con PHP y Symfony (I) Introduccin a Symfony


David J. Brenes Martnez
Curso de Extensin Universitaria Desarrollo web avanzado Universidad de Oviedo

Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

2010/03/22

Desarrollo habitual
Symfony David J. Brenes Martnez Introducing Symfony

Estructura ad-hoc de directorios Directorios de cdigo pblicos (die, con suerte) La conguracin es otro chero PHP Cdigo Spaguetti

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Y llegan los detractores


Symfony David J. Brenes Martnez Introducing Symfony

PHP es un lenguaje pobre PHP no es apto para proyectos a gran escala PHP no es mantenible PHP genera proyectos basura

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Y llegan los detractores


Symfony David J. Brenes Martnez Introducing Symfony

PHP es un lenguaje pobre PHP no es apto para proyectos a gran escala PHP no es mantenible PHP genera proyectos basura

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Primera ley de la informtica


Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony

Mustrame a alguien que programe mal en PHP y te mostrar a alguien que programa mal.

Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Segunda ley de la informtica


Symfony David J. Brenes Martnez

Todo escala Facebook Tuenti Yahoo! ... Pero hay que hacerlo bien

Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

La llegada de los frameworks


Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Desarrollo web menos ad-hoc Popularizacin de patrones de diseo, buenas prcticas. . . Incremento de exigencia en desarrollo web Aparicin de soluciones avanzadas

La llegada de los frameworks


Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Struts Zend CakePHP Spring Ruby on Rails

La llegada de Symfony
Symfony David J. Brenes Martnez Introducing Symfony

Proyecto comercial de SensioLabs (Sensio Framework) Liberacin e inicio del proyecto Symfony en 2005 1 ao ms tarde que Rails

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Inspiracin
Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Basado en conceptos de otros frameworks (Rails, Spring, Django. . . ) Actualmente comparte caractersticas con otros frameworks (Rails) Uso de otros proyectos PHP (Propel, Doctrine, PHPUnit. . . )

Proyectos
Symfony David J. Brenes Martnez Introducing Symfony

Yahoo! Bookmarks Delicious DailyMotion

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Componentes
Symfony David J. Brenes Martnez

Bibliotecas nacidas del core de Symfony Usables en cualquier otro proyecto de maner directa Parseador de YAML Manejador de eventos Gestor de dependencias Sistema de plantillas Gestor de peticiones

Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

MVC en Symfony
Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

MVC en Symfony
Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Controlador
Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

1 2

Servidor Web captura la peticin La redirige al punto de entrada (index.php) con parmetros index.php inicia el controlador El controlador decide a qu accin corresponde la ruta

3 4

Modelo
Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

1 2 3

La accin (controlador) solicita unos datos al modelo La accin realiza modicaciones al modelo El modelo persiste esas modicaciones si la accin lo solicita La accin pasa esos del modelo a la vista

Vista
Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

1 2 3

La vista no tiene lgica de proceso Solo genera HTML en base a los datos que recibe La accin decide que vista se genera y con qu parmetros Una vez que la vista termina, el controlador le devuelve el resultado

Descarguemos Symfony
Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony

www.symfony-project.org

Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Directorios
Symfony

apps: Un directorio para cada aplicacin posible dentro de Symfony cache: Ficheros para la cach cong : Ficheros de conguracin data: Ficheros de datos variados como xtures lib: Ficheros de cdigo global a las aplicaciones (el modelo, software ajeno a Symfony. . . ) log : Ficheros de log plugins: Plugins aadidos a Symfony tests: Suite de tests de la aplicacin web: Carpeta pblica

David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Aplicaciones
Symfony David J. Brenes Martnez

Symfony permite tener conviviendo varias aplicaciones en un proyecto Aplicaciones que comparten modelo, base de usuarios, etc. Ejemplo tpico: Frontend / Backend / API Aplicaciones independientes (incluso dominios distintos)

Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Mdulos
Symfony David J. Brenes Martnez Introducing Symfony

Cada aplicacin tiene varios mdulos Los mdulos permiten separar aspectos de la aplicacin Cada mdulo puede tener conguracion diferente

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Lib
Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

model: El cdigo del modelo (VOs, DAOs y Formularios) helpers: conjunto de funciones de ayuda vendor: Codigo ajeno al framework (o el propio framework)

Plugins
Symfony David J. Brenes Martnez Introducing Symfony

Miniaplicaciones autocontenidas. Su propia conguracin, sus propios modelos. Se mantienen en repositorios aparte (anlogo a las gemas de Rails)

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Web
Symfony David J. Brenes Martnez Introducing Symfony

nica carpeta que debera tener acceso pblico. Contiene los entornos de las aplicaciones index.php: Entorno por defecto para la aplicacin por defecto

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Despliegue
Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Apuntar en Apache a la carpeta web Copiar carpeta /lib/vendor/symfony/data/web/sf a la carpeta web Visitar entorno de produccin Visitar entorno de depuracin

Prueba rpida
Symfony David J. Brenes Martnez Introducing Symfony

Descargar schema.yml Descargar databases.yml Activar driver MySQL (extension=php_pdo_mysql.dll) Unas cuantas tareas

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

No solo una aplicacin web


Symfony David J. Brenes Martnez Introducing Symfony

Symfony.bat en el raiz Consola de rdenes para Symfony Automatizacin de tareas

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Tareas del proyecto


Symfony David J. Brenes Martnez Introducing Symfony

Generar aplicaciones Generar mdulos Generar otro proyecto

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Tareas del modelo


Symfony David J. Brenes Martnez Introducing Symfony

Gestionar BD Cargar datos de prueba Manejar el modelo

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Tareas de plugins
Symfony David J. Brenes Martnez Introducing Symfony

Listar Instalar plugins nuevos Actualizar

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Tarea de cach
Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

symfony cache:clear Symfony dispone de cach Se cachean cosas importantes (conguracin, vistas, modelos. . . ) En entorno de produccin la cach es ms agresiva Si algo nocambia, cache:clear

Conguration over convention?


Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Convention over conguration: Uso de convenciones para evitar conguraciones explcitas Menos cantidad de trabajo Ms magia y potencia Ms necesidad de memoria

Conguration over convention?


Symfony David J. Brenes Martnez Introducing Symfony

Symfony cona ms en cheros de conguracin PHP es menos exible que Ruby PHP permite menos magia

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

YAML: YAML Aint Markup Language


Symfony David J. Brenes Martnez Introducing Symfony

Formato de representacin de datos alternativo a XML y JSON Basado en espacios para indentar conguraciones Formato muy legible y sencillo

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

YAML en Symfony
Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Todos los cheros de conguracin son YAML Componente de Symfony para parseo de YAML

Niveles de conguracin
Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Conguracin de Symfony Conguracin de Plugins Congracin de proyecto Conguracin de aplicacin Conguracion de mdulo

Entornos de conguracin
Symfony David J. Brenes Martnez Introducing Symfony

Conguracin especca para entornos de desarrollo, produccin y test Permiten cambiar de entorno a placer

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Settings.yml
Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Cuestiones generales sobre el proyecto y las aplicaciones Codicacin de caracteres Cuestiones de seguridad Pginas de error

Factories.yml
Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Conguracin para objetos necesitados por el framework (cach, i18n. . . ) Permite cargar objetos en el core de Symfony cambiando el comportamiento Ejemplos: Nuevos sistemas de cach, i18n en Base de Datos. . .

Databases.yml
Symfony David J. Brenes Martnez Introducing Symfony

Dene la conguracin de conexion a BD Permite denir conexiones diferentes para cada entorno

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Security.yml
Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Dene aspectos ms concretos de seguridad Permite asegurar acciones en concreto

Security.yml
Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Dene aspectos ms concretos de seguridad Permite asegurar acciones en concreto

Routing.yml
Symfony David J. Brenes Martnez Introducing Symfony

Congura el sistema de rutas La conguracin va en cascada. La primera ruta que coincide es la que se usa.

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

App.yml
Symfony David J. Brenes Martnez Introducing Symfony

Conguracin especca de una aplicacin Permite denir parmetros propios Usado por los plugins para denir su propia conguracin

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

lters.yml
Symfony David J. Brenes Martnez Introducing Symfony

Dene los ltros por los que debe pasar la Request para ecutarse Permite pasar parmetros a los ltros

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

view.yml
Symfony David J. Brenes Martnez Introducing Symfony

Dene la conguracion de las vistas Permite cargar CSS, JS, denir elementos meta, ttulos de pgina. . .

MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Referencias
Symfony David J. Brenes Martnez

Symfony Project: www.symfony-project.org The 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 Denitive Guide to symfony: http://www.symfony-project.org/book/1_2/

Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Crditos
Symfony David J. Brenes Martnez Introducing Symfony MVC en Symfony

La imagen de MVC est sacada de Practical Symfony

Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

Licencia
Symfony David J. Brenes Martnez

Estas transparencias se publican bajo licencia Creative Commons y se pueden redistribuir o modicar bajo las siguientes condiciones: Se d reconocimiento al autor de estas transparencias. No se use con propsitos comerciales. Se distribuya con la misma licencia. Texto de la licencia: http: //creativecommons.org/licenses/by-nc-sa/3.0/

Introducing Symfony MVC en Symfony Una aplicacin Symfony Consola Symfony Sistema de conguracin Referencias, Crditos y Licencia

También podría gustarte