desymfony 2011 - introducción a symfony2

90
JORNADAS SYMFONY 2011 1-3 JULIO, CASTELLÓN DESYMFONY.COM Introducción a Symfony2 Javier Eguiluz

Upload: javier-eguiluz

Post on 15-Jan-2015

32.292 views

Category:

Technology


1 download

DESCRIPTION

Las Jornadas Symfony 2011 comenzaron con una breve introducción a Symfony2. Durante la presentación se muestran algunas de las características más destacadas de Symfony2 a través de diez palabras clave.

TRANSCRIPT

Page 2: Desymfony 2011 - Introducción a Symfony2

JORNADAS SYMFONY 2011 están patrocinadas porPa

troc

inad

ores

PL

ATIN

O y

OR

OPa

troc

inad

ores

PL

ATA

Patr

ocin

ador

es

BR

ON

CECo

labo

rado

res

Page 3: Desymfony 2011 - Introducción a Symfony2

Algunas partes de esta presentación no se pueden entender bien sin ver el vídeo de su impartición.

Puedes acceder al vídeo enhttp://bit.ly/sf-tutorial1

importante

Page 4: Desymfony 2011 - Introducción a Symfony2
Page 5: Desymfony 2011 - Introducción a Symfony2

« framework PHP »

Page 6: Desymfony 2011 - Introducción a Symfony2

Versátil

1 2 3 4 5 6 7 8 9 101

Page 7: Desymfony 2011 - Introducción a Symfony2

full!stack framework

Page 8: Desymfony 2011 - Introducción a Symfony2

full!stack framework

components framework

Page 9: Desymfony 2011 - Introducción a Symfony2

full!stack framework

components framework

!micro

framework

Page 10: Desymfony 2011 - Introducción a Symfony2

full!stack framework

components framework

!micro

framework

Page 11: Desymfony 2011 - Introducción a Symfony2

Proyecto Symfony

BrowserKit

ClassLoader

Console

CssSelector

DependencyInjection

DomCrawler

EventDispatcher

Finder

Form

HttpFoundation

HttpKernel

Locale

Process

Routing

Security

Serializer

Templating

Translation

Validator

Yaml

Config 21librerías

Page 12: Desymfony 2011 - Introducción a Symfony2

BrowserKit

ClassLoader

Console

CssSelector

DependencyInjection

DomCrawler

EventDispatcher

Finder

Form

HttpFoundation

HttpKernel

Locale

Process

Routing

Security

Serializer

Templating

Translation

Validator

Yaml

Config

componentes

Page 13: Desymfony 2011 - Introducción a Symfony2

BrowserKit

ClassLoader

Console

CssSelector

DependencyInjection

DomCrawler

EventDispatcher

Finder

Form

HttpFoundation

HttpKernel

Locale

Process

Routing

Security

Serializer

Templating

Translation

Validator

Yaml

Config

componentes

Assetic

Doctrine

Monolog

SwiftMailer

librerías externas

Page 14: Desymfony 2011 - Introducción a Symfony2

BrowserKit

ClassLoader

Console

CssSelector

DependencyInjection

DomCrawler

EventDispatcher

Finder

Form

HttpFoundation

HttpKernel

Locale

Process

Routing

Security

Serializer

Templating

Translation

Validator

Yaml

Config

componentes

Assetic

Doctrine

Monolog

SwiftMailer

librerías externas

DoctrineBundle

bundles

SecurityBundle FrameworkBundle +6 Bundles

Page 15: Desymfony 2011 - Introducción a Symfony2

Framework Symfony2

BrowserKit

ClassLoader

Console

CssSelector

DependencyInjection

DomCrawler

EventDispatcher

Finder

Form

HttpFoundation

HttpKernel

Locale

Process

Routing

Security

Serializer

Templating

Translation

Validator

Yaml

Config

componentes

Assetic

Doctrine

Monolog

SwiftMailer

librerías externas

DoctrineBundle

bundles

SecurityBundle FrameworkBundle +6 Bundles

Page 16: Desymfony 2011 - Introducción a Symfony2

Framework Symfony2

BrowserKit

ClassLoader

CssSelector

DomCrawler

EventDispatcher

HttpFoundation

HttpKernel

Routing

Templating

Yaml

componentes

Page 17: Desymfony 2011 - Introducción a Symfony2

!Framework

SilexBrowserKit

ClassLoader

CssSelector

DomCrawler

EventDispatcher

HttpFoundation

HttpKernel

Routing

Templating

Yaml

componentes

1 archivo 400 KB

Page 18: Desymfony 2011 - Introducción a Symfony2

Útil

1 2 3 4 5 6 7 8 9 102

Page 19: Desymfony 2011 - Introducción a Symfony2

¿ Por qué utilizar un framework bueno ?

Page 20: Desymfony 2011 - Introducción a Symfony2

• persistencia datos

• seguridad

• formularios

• validación

• plantillas

• archivos de log

• rendimiento

• cache

• archivos web

• internacionalización

• tareas programadas

• enrutamiento

Fuente: Ryan Weaver, http://slidesha.re/iuptB2 (pág. 9)

retos de la programación web

Page 21: Desymfony 2011 - Introducción a Symfony2

• persistencia datos

• seguridad

• formularios

• validación

• plantillas

• archivos de log

• rendimiento

• cache

• archivos web

• internacionalización

• tareas programadas

• enrutamiento

Fuente: Ryan Weaver, http://slidesha.re/iuptB2 (pág. 9)

lo que soluciona Symfony2

Page 22: Desymfony 2011 - Introducción a Symfony2

industrialización

Page 23: Desymfony 2011 - Introducción a Symfony2

Buenas prácticas

1 2 3 4 5 6 7 8 9 103

Page 24: Desymfony 2011 - Introducción a Symfony2
Page 25: Desymfony 2011 - Introducción a Symfony2

<http> <intercept-url pattern='/login.htm*' filters='none'/> <intercept-url pattern='/**' access='ROLE_USER' /> <form-login login-page='/login.htm' default-target-url='/home.htm' always-use-default-target='true' /></http>

Page 26: Desymfony 2011 - Introducción a Symfony2

firewalls: login: pattern: ^/login anonymous: ~ all: pattern: ^/ form_login: login_path: /login default_target_path: /home.htm always_use_default_target_path: true

<http> <intercept-url pattern='/login.htm*' filters='none'/> <intercept-url pattern='/**' access='ROLE_USER' /> <form-login login-page='/login.htm' default-target-url='/home.htm' always-use-default-target='true' /></http>

Page 27: Desymfony 2011 - Introducción a Symfony2

EntityManagerFactory emf = Persistence.createEntityManagerFactory("manager1");

EntityManager em = emf.createEntityManager();

Usuario anonimo = new Usuario();anonimo.setNombre("Anónimo");anonimo.setEdad(20);

em.persist(anonimo);em.flush();

Page 28: Desymfony 2011 - Introducción a Symfony2

EntityManagerFactory emf = Persistence.createEntityManagerFactory("manager1");

EntityManager em = emf.createEntityManager();

Usuario anonimo = new Usuario();anonimo.setNombre("Anónimo");anonimo.setEdad(20);

em.persist(anonimo);em.flush();

$em = $this->get('doctrine')->getEntityManager();

$anonimo = new Usuario();$anonimo->setNombre("Anónimo");$anonimo->setEdad(20);

$em->persist($anonimo);$em->flush();

Page 29: Desymfony 2011 - Introducción a Symfony2

ruby script/generate model Articulo titulo:string body:text

Page 30: Desymfony 2011 - Introducción a Symfony2

ruby script/generate model Articulo titulo:string body:text

php app/console doctrine:generate:entity MiBundle:Articulo "titulo:string(255) body:text"

Page 31: Desymfony 2011 - Introducción a Symfony2

{% extends "base_generic.html" %}{% block title %} {{ seccion.titulo }} {% endblock %}{% block content %}<h1> {{ seccion.titulo }} </h1>

{% for articulo in articulos %} <h2> {{ articulo.titulo|upper }} </h2>{% endfor %}{% endblock %}

Page 32: Desymfony 2011 - Introducción a Symfony2

{% extends "base_generic.html" %}{% block title %} {{ seccion.titulo }} {% endblock %}{% block content %}<h1> {{ seccion.titulo }} </h1>

{% for articulo in articulos %} <h2> {{ articulo.titulo|upper }} </h2>{% endfor %}{% endblock %}

{% extends "::base_generic.html" %}{% block title %} {{ seccion.titulo }} {% endblock %}{% block content %}<h1> {{ seccion.titulo }} </h1>

{% for articulo in articulos %} <h2> {{ articulo.titulo|upper }} </h2>{% endfor %}{% endblock %}

Page 33: Desymfony 2011 - Introducción a Symfony2
Page 34: Desymfony 2011 - Introducción a Symfony2

Twig

Assetic

Monolog

Page 35: Desymfony 2011 - Introducción a Symfony2

Flexible

1 2 3 4 5 6 7 8 9 104

Page 36: Desymfony 2011 - Introducción a Symfony2

novato clásico experto

Page 37: Desymfony 2011 - Introducción a Symfony2

YAMLnovato clásico experto

Page 38: Desymfony 2011 - Introducción a Symfony2

YAMLXMLnovato clásico experto

Page 39: Desymfony 2011 - Introducción a Symfony2

YAMLXMLPHPnovato clásico experto

Page 40: Desymfony 2011 - Introducción a Symfony2

archivos de configuración

PHPYAML XML

Page 41: Desymfony 2011 - Introducción a Symfony2

plantillas

PHPTwig

Page 42: Desymfony 2011 - Introducción a Symfony2

almacenamiento

NoSQLSQL

Page 43: Desymfony 2011 - Introducción a Symfony2

Configuración PHP XML YAML

Plantillas PHP Twig

Almacenamiento SQL NoSQL

Flujo de trabajo Anotaciones Archivos Anotaciones Archivos Anotaciones Archivos

Page 44: Desymfony 2011 - Introducción a Symfony2

Rendimiento

1 2 3 4 5 6 7 8 9 105

Page 45: Desymfony 2011 - Introducción a Symfony2

« La gran obsesión de Symfony2 »

Page 46: Desymfony 2011 - Introducción a Symfony2

5.3.2

Page 47: Desymfony 2011 - Introducción a Symfony2

archivos de configuración

YAML XMLPHP

Page 48: Desymfony 2011 - Introducción a Symfony2

todo se transforma a PHP

PHP

YAML XML

Caché

Page 49: Desymfony 2011 - Introducción a Symfony2

PHP

YAML XML

Caché

anotacionesTwig

Page 50: Desymfony 2011 - Introducción a Symfony2

Aplicación

BD

Page 51: Desymfony 2011 - Introducción a Symfony2

Aplicación

BD

Page 52: Desymfony 2011 - Introducción a Symfony2

Aplicación

BD

Page 53: Desymfony 2011 - Introducción a Symfony2

Aplicación

BD

Page 54: Desymfony 2011 - Introducción a Symfony2

Aplicación

BD

Reverse Proxy

Page 55: Desymfony 2011 - Introducción a Symfony2

Aplicación

BD

Reverse Proxy

Page 56: Desymfony 2011 - Introducción a Symfony2

Soporte

1 2 3 4 5 6 7 8 9 106

Page 57: Desymfony 2011 - Introducción a Symfony2
Page 58: Desymfony 2011 - Introducción a Symfony2

1.x

2.x

1.0

Feb. 2007

1.2

Dic. 2008

1.4

Dic. 2009

Nov. 2012

1.4.x

2.0

Jul. 2011

Jun. 2016

2.x

Page 59: Desymfony 2011 - Introducción a Symfony2

hace 5 años no existía

Page 60: Desymfony 2011 - Introducción a Symfony2

Documentación

1 2 3 4 5 6 7 8 9 107

Page 61: Desymfony 2011 - Introducción a Symfony2
Page 62: Desymfony 2011 - Introducción a Symfony2

10 libros 8 idiomas 15.000 págs.

Page 63: Desymfony 2011 - Introducción a Symfony2

TheBook~ 200 págs.

The Cookook+50 recetas

Referencecientos de opciones de configuración

APIcientos de métodos

Page 64: Desymfony 2011 - Introducción a Symfony2

Comunidad

1 2 3 4 5 6 7 8 9 108

Page 65: Desymfony 2011 - Introducción a Symfony2

+200

Page 66: Desymfony 2011 - Introducción a Symfony2

+200

3217061 43

Fuente: Github & andrewnacin.com

Page 67: Desymfony 2011 - Introducción a Symfony2

Doctrine

PropelAssetic

Behat

Twig

SilexImagine

SwiftMailer

Page 68: Desymfony 2011 - Introducción a Symfony2

KrisWallsmith

JonathanH. Wage

SebastianBergmann

Bulat Shakirzyanov

Konstantin Kudryashov

Benjamin Eberlei

Nils Adermann

François Zaninotto

Thibault Duplessis

Lukas K. Smith

RyanWeaver

Bernhard Schussek

Page 69: Desymfony 2011 - Introducción a Symfony2

siwapp.org

Page 70: Desymfony 2011 - Introducción a Symfony2

apostrophenow.orgdiem-project.org

Page 71: Desymfony 2011 - Introducción a Symfony2

phpbb.com

Page 72: Desymfony 2011 - Introducción a Symfony2

Visionario

1 2 3 4 5 6 7 8 9 109

Page 73: Desymfony 2011 - Introducción a Symfony2

Foto: Guillaume Ponçon

Fabien Potencier

Fundador y responsable del

proyecto Symfony

Page 74: Desymfony 2011 - Introducción a Symfony2

Fabien PotencierOctubre 2005

Symfony 1 requerirá como mínimo PHP 5.2.4

Page 75: Desymfony 2011 - Introducción a Symfony2

Fabien PotencierOctubre 2009

Doctrine 2.0 es una de las mejores cosas que le han

pasado a PHP

Page 76: Desymfony 2011 - Introducción a Symfony2

Fabien PotencierSeptiembre 2008

Symfony2 tendrá un contenedor de Inyección de Dependencias basado

en Spring

Page 77: Desymfony 2011 - Introducción a Symfony2

Fabien PotencierSeptiembre 2010

Twig será el formato por defecto de las plantillas de

Symfony2

Page 78: Desymfony 2011 - Introducción a Symfony2

Popular

1 2 3 4 5 6 7 8 9 1010

Page 79: Desymfony 2011 - Introducción a Symfony2

para programadores#1

Fuente: Github

Page 80: Desymfony 2011 - Introducción a Symfony2

0

125000

250000

375000

500000

páginas vistas

Page 81: Desymfony 2011 - Introducción a Symfony2

0

750

1500

2250

3000

watchers

Page 82: Desymfony 2011 - Introducción a Symfony2

0

175

350

525

700

forks

Page 83: Desymfony 2011 - Introducción a Symfony2

0

375

750

1125

1500

pull requests

Page 84: Desymfony 2011 - Introducción a Symfony2

para el público en general

Fuente: Google Trends

#1

Page 85: Desymfony 2011 - Introducción a Symfony2

0 0,25 0,5 0,75 1

popularidad España, 2011

Fuente: Google Trends

Page 86: Desymfony 2011 - Introducción a Symfony2

#1 Argentina#1 Colombia#1 Chile#1 Cuba#1 Mexico#1 Perú#1 Uruguay#1 Venezuela

Fuente: Google Trends & Alexa

Page 87: Desymfony 2011 - Introducción a Symfony2

en ofertas de trabajo

Fuente: Infojobs

#1

Page 88: Desymfony 2011 - Introducción a Symfony2

Fuente: deSymfony

#1

Page 89: Desymfony 2011 - Introducción a Symfony2

1. versátil

3. buenas prácticas

5. rendimiento

7. documentación

9. visionario

2. útil

4. flexible

6. soporte

8. comunidad

10. popular

Symfony2 es

Page 90: Desymfony 2011 - Introducción a Symfony2

[email protected]

twitter.com/javiereguiluz

linkedin.com/in/javiereguiluz

contacto