introducción a symfony

29
Symfony Introducción, estructura y ‘Hello world’ @marcossegovia

Upload: uvinum

Post on 21-Feb-2017

291 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: Introducción a Symfony

SymfonyIntroducción, estructura y ‘Hello world’

@marcossegovia

Page 2: Introducción a Symfony

Esto de qué va?

Un poco de wiki

- Fabien Potencier - Primera versión, Octubre 2005 - Symfony 2.0 RC1, 24 Junio 2011

FYI: S de Sensio + F de Framework -> Symfony

Page 3: Introducción a Symfony

Qué es Symfony, entonces?

Symfony es un framework escrito en Php

Pero Symfony también es un conjunto de componentes

Su integración con Bundles y los convenios (PSR) es un WIN

Sin mencionar que tiene una comunidad BRUTAL

Y todo free

Page 4: Introducción a Symfony

Contributions

Sifo5 commits

Laravel50 commits

Symfony50 commits

549 commits

4811 commits

26051 commits

Page 5: Introducción a Symfony

Contributions

FYICakePhp

50 commits

29665 commits

Page 6: Introducción a Symfony

Symfony, popular?

Full-stack-framework o components

Bundles, bundles y más bundles

Integridad nativa con muchos otros Open-Source: Doctrine, Monolog…

Primer framework en traernos el Dependency Injection Container. (Y basar su arquitectura en él.)

Page 7: Introducción a Symfony
Page 8: Introducción a Symfony

Instalación

Instalamos Symfony-cli en nuestro Mac:

$ sudo curl -LsS https://symfony.com/installer -o /usr/local/bin/symfony $ sudo chmod a+x /usr/local/bin/symfony

$ symfony new jelly_time_project$ php bin/console server:start

Page 9: Introducción a Symfony

jelly_time_project/app

- app/config : declaración de servicios, variables de

entorno, rutas…

- app/Resources : assets/utils, translation files,

templates

Page 10: Introducción a Symfony

app/AppKernel.php

Mother of dragons

config_dev.yml

config_prod.ymlconfig.yml

services.yml

parameters.yml

+

parameters_redefinidos servicios_redefinidosrouting.yml

Page 11: Introducción a Symfony

jelly_time_project/bin

Solo hay una cosa mejor que el plugin de Symfonyy eso es la consola.

$ bin/console$ bin/symfony_requirements

Page 12: Introducción a Symfony

jelly_time_project/src

Wait, Bundle?

…más en el el próximo workshop

Page 13: Introducción a Symfony

app/AppKernel.php

DEVPROD

Page 14: Introducción a Symfony

jelly_time_project/tests

Tests de la aplicación no encapsulados en Bundles.Ejemplo: Tests de integración/funcionales entre Bundles.

Page 15: Introducción a Symfony

jelly_time_project/tests

FrameworkBundle\TestProxy de Symfony para testear

funcionalmente con PhpUnit

Ya tenemos Behat para eso ;)

Page 16: Introducción a Symfony

jelly_time_project/var

Compilados de Twig, caché de Doctrine, profiling, logs de la aplicación, utils para los binarios…

Page 17: Introducción a Symfony

jelly_time_project/web

Estáticos y public: css, js, images…

Boostrap de la app

app.php es el index.php para PROD

app_dev.php es el index.php para DEV

Page 18: Introducción a Symfony

Controllers

Page 19: Introducción a Symfony

AppBundle\Controller

Routing

Annotations

File Definitions (yaml, xml, php)

Page 20: Introducción a Symfony

Annotations

app/config/routing.yml

Path donde definiremos los controllers

Comodidad y agilidad

Descentralización y demasiada magia en los controllers

Page 21: Introducción a Symfony

Annotations

A nivel de método

OJO !

Page 22: Introducción a Symfony

Annotations

A nivel de clase

Page 23: Introducción a Symfony

Definición en ficheros

Centralización de los ficheros

Yml, fácil lectura (porque XML y Php…)

Los controllers dejan de tener la responsabilidad de enrutar

Page 24: Introducción a Symfony

Definición en ficheros (Yml)

app/config/routing.yml

plugin FTW !

Page 25: Introducción a Symfony

Bonus: Yml + Annotations

app/config/routing.yml

Y lo mejor, es que funciona.

Page 26: Introducción a Symfony

Yo, soy programador

php bin/console server:start

bin/console debug:router

Page 27: Introducción a Symfony

– Dijo alguien

“Entonces, Jacemos un workshop o qué?”

Page 28: Introducción a Symfony

Os reto a…

Crear un nuevo proyecto Symfony

En el propio AppBundle, crear un nuevo Controller mediante annotations:

Devolver una Response `Hello World`

Devolver una Response con un Twig Template con un `Hello World`

Hacer lo anterior, pero esta vez definiendo las rutas con yaml

Page 29: Introducción a Symfony

Esto es solo el principio…

AKKA la puntita

PREGUNTAS?