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
Opciones de ORM
Por defecto, ningún ServiceProvider oficial.
Doctrine:
dflydev-doctrine-orm-service-provider
Propel:
PropelServiceProvider (oficial de Propel)
Gracias!
@asiermarques