Symfony2 o Laravel

Posted by victor on April 10th, 2013
Hace unos días, se creó una interesante discusión en Reddit entorno a si la mejor opción es Symfony2 o Laravel. Como siempre, ante este tipo de preguntas, la respuesta es depende. La elección de un framework y otro, incluso hay situaciones en las que es mejor no usar framework alguno, está condicionada por muchos factores como la envergadura del proyecto, experiencia previa, calidad de la documentación o tiempo de entrega del proyecto. Los comentarios de la discusión son muy interesantes y es muy recomendable su lectura. Que quede constancia que no soy usuario de Laravel, aunque tengo una tarea mental que me dice que tengo que dedicar unas horas a probarlo. Symfony2 es un framework en el que se puede trabajar a todos los niveles. Podemos decidir trabajar en lo que podríamos llamar la capa RAD en la que creamos prototipos rápidamente mediante bundles como SensioFrameworkExtraBundle, SonataAdminBundle o KnpRadBundle que facilitan enormemente las tareas habituales, esas que podrían cubrir el 80% de los pequeños y medianos proyectos web. Una especial atención merece KnpRadBundle que simplifica acciones relacionadas con las rutas, formularios, inyecciónes de dependencias etc... Symfony2 posee un enorme ecosistema de bundles que extienden el framework y ayudan al desarrollador a disminuir el tiempo de entrega. Laravel es más parecido a Silex, un microframework desarrollado por Sensio Labs inspirado en Sinatra (microframework en Ruby) y basado en los principales componentes de Symfony2, como el HttpKernel, en el que se simplifican mucho las cosas. De hecho, Silex y Laravel comparten conceptos como "Service providers" que añaden funcionalidad a la aplicación.  
Hola mundo en Laravel:
Route::get('/', function()
{
    return "Hello World!";
});
Hola mundo en Silex:
$app = new Silex\Application(); 

$app->get('/', function() use($app) { 
    return 'Hello World!'; 
}); 

$app->run();
Ambos ejemplos tiene una forma de trabajar parecida, aunque este ejemplo no muestra ni el más mínimo potencial de ambos framework. Una de las partes más interesantes de Laravel que no se encuentra en Silex es el soporte de serie al mapeo de objetos relacionales -ORM- mediante un componente llamado Eloquent. Silex tiene soporte a Doctrine Dbal mediante DoctrineServiceProvider pero esto no es un ORM. Symfony2 usa Doctrine como ORM por defecto. Otras características interesantes de Laravel es la inclusión de una API unificada para procesar colas mensajes con drivers para los algunos de los principales sistemas de gestión como IronMQ y Amazon SQS. Como comentario final, resaltar que el crecimiento de Laravel es patente, que se trata de un framework que pretende fomentar una forma de desarrollar clara, intentando no complicar las cosas. Symfony2 permite trabajar a cualquier nivel: usando las convenciones y bundles y un poco de configuración podemos tener prototipos rápidos pero Symfony2 permite trabajar a más bajo nivel con componentes reutilizables  totalmente desacoplados.   Lectura adicional: "Good design is no excuse for wasting time" de Lukas Kahwe Smith. Reddit: Symfony2 vs Laravel.

Comments

comments powered by Disqus