introducción a symfony
Post on 21-Feb-2017
291 Views
Preview:
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