introducción a symfony

Post on 21-Feb-2017

291 Views

Category:

Engineering

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

SymfonyIntroducción, estructura y ‘Hello world’

@marcossegovia

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

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

Contributions

Sifo5 commits

Laravel50 commits

Symfony50 commits

549 commits

4811 commits

26051 commits

Contributions

FYICakePhp

50 commits

29665 commits

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

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

jelly_time_project/app

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

entorno, rutas…

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

templates

app/AppKernel.php

Mother of dragons

config_dev.yml

config_prod.ymlconfig.yml

services.yml

parameters.yml

+

parameters_redefinidos servicios_redefinidosrouting.yml

jelly_time_project/bin

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

$ bin/console$ bin/symfony_requirements

jelly_time_project/src

Wait, Bundle?

…más en el el próximo workshop

app/AppKernel.php

DEVPROD

jelly_time_project/tests

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

jelly_time_project/tests

FrameworkBundle\TestProxy de Symfony para testear

funcionalmente con PhpUnit

Ya tenemos Behat para eso ;)

jelly_time_project/var

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

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

Controllers

AppBundle\Controller

Routing

Annotations

File Definitions (yaml, xml, php)

Annotations

app/config/routing.yml

Path donde definiremos los controllers

Comodidad y agilidad

Descentralización y demasiada magia en los controllers

Annotations

A nivel de método

OJO !

Annotations

A nivel de clase

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

Definición en ficheros (Yml)

app/config/routing.yml

plugin FTW !

Bonus: Yml + Annotations

app/config/routing.yml

Y lo mejor, es que funciona.

Yo, soy programador

php bin/console server:start

bin/console debug:router

– Dijo alguien

“Entonces, Jacemos un workshop o qué?”

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

Esto es solo el principio…

AKKA la puntita

PREGUNTAS?

top related