Silex para aplicaciones web MVC

Post on 25-May-2015

1.259 views 1 download

description

Mi charla en la unconference de DeSymfony2013.

Transcript of Silex para aplicaciones web MVC

Silex como framework MVC @asiermarques

Simettric.com + 4visionshq.com

unconference

Silex

Microframework PHP

– Lo mínimo para dar una solución

– Sencillo

– Minimalismo

– Pragmatismo

La esencia del desarrollo web

Request

GET /uri

Response

Status Code: 200

Content-Type: text/html

Lo que se suele escuchar…

Silex es para proyectos pequeños.

Symfony2 es para proyectos grandes.

Dustin Whittle

“Use silex if you are comfortable with making all

of your own architecture decisions and full stack

Symfony2 if not.”

Fabien Potencier

“A micro-framework is just about the bare minimum you need to get started. It lets you decide which directory structure you want, it lets you decide which feature you

want to enable, it lets decide how you want to work.”

Symfony2 VS Silex

La visión de Symfony2 es ahorrar la mayor problemática posible al desarrollador.

La visión de Silex es resolver la menor problemática posible al desarrollador.

Con Silex no se piensa tanto en cómo trabajar con el framework para resolver problemas.

Speakerin.com & Silex

SpeakerIn.com

• Desarrollado en 48horas en un #hackmité

hackmite.elcomite.org

• Por dos personas: @fran_mosteiro y yo. – Viniendo de Java, Fran no tenía experiencia previa en php.

• Elegimos Silex. – Porque somos de Bilbao, pero no tanto.

Conclusiones

• Terminamos el proyecto con éxito. http://speakerin.com

• Usamos los proveedores básicos: sesión, swiftmailer para conectar con mandrill.com.

• Paris & Idiorm, como ORM.

• No usamos el componente de seguridad.

• No usamos controladores como clases.

Demo

ServiceProviders

Los más comunes

• Session

• Form

• SwiftMailer

• Doctrine DBAL

• Twig

• Security

Security Service Provider

• Firewalls

• UserProvider

• ACL

Silex\Application extends \Pimple

Todo es un $app[servicio]

http://pimple.sensiolabs.org

Escalar Silex

• Estructura de directorios – composer.phar create-project fabpot/silex-skeleton

• Controladores como clases – $app->get('/', 'Namespace\Controlador::acción');

• Grupos de rutas

• Caché HTTP

• ORM

Grupos de rutas

$blog = $app['controllers_factory'];

$blog->get('/', function() { … });

$blog->post('/nuevo', function() { … });

$blog->get('/comentarios', function() { … });

$app->mount('/blog', $blog);

HTTP Caché

$app['cache']->run();

• Proxy cache escrito en PHP

• Soporta cabeceras y directrices de caché de HTTP

• Soporte para ESI

HTTP Caché: ESI

Permiten incrustar código en nuestro HTML desde otra ubicación (url)

HTTP Caché: ESI

Permiten incrustar código en nuestro HTML desde otra ubicación (url)

/account/user-vcard

/cart/resume

Gracias!

@asiermarques