Qué es Symfony y por qué deberías conocerlo
¿Qué es Symfony?
Sección titulada «¿Qué es Symfony?»Symfony es un framework de código abierto para PHP. Técnicamente se trata de un conjunto de librerías que puedes utilizar en tus aplicaciones.
Por qué usar un Framework
Sección titulada «Por qué usar un Framework»Usar un framework permite:
- Acelerar significativamente los tiempos de desarrollo
- Mejorar la calidad de los productos
Esto se logra al utilizar código ya desarrollado para resolver tareas comunes (y usualmente complejas). Por otra parte, al ser código abierto, está sujeto al escrutinio constante de miles de desarrolladores los cual, además de detectar tempranamente los problemas, aportan soluciones mediante pull requests (¡Incluso puedes hacer tus propios aportes!).
En definitiva, utilizar un framework hace nuestro trabajo mucho más eficiente y placentero. La pregunta al final debería ser más bien ¿por qué NO usar un framework?
Qué frameworks hay para PHP
Sección titulada «Qué frameworks hay para PHP»Siendo PHP un lenguaje tan popular, no es raro encontrar en Internet un sinfín de frameworks, algunos más maduros que otros, algunos orientados a resolver tareas específicas, etc. Entre los más comúnmente utilizados están:
Por qué elegir Symfony
Sección titulada «Por qué elegir Symfony»Este punto es el más complejo seguramente. Es muy común que los desarrolladores se aferren a su herramienta de preferencia como lo hacen a su equipo de fútbol favorito. Voy a dar simplemente las razones que, a mi entender, hacen de Symfony la elección acertada:
- La arquitectura desacoplada (El framework está diseñado de tal forma que es perfectamente posible tomar solo lo necesario para cada aplicación)
- La comunidad de desarrolladores (Symfony es un framework en evolución constante, siempre a la vanguardia de lo que sucede en el mundo PHP)
- La documentación existente (Aprender Symfony, si bien es una tarea que nunca termina, es realmente un placer, hay muchísimo material para consultar con grandes ejemplos de lo más variado)
- El rendimiento que logran las aplicaciones (Symfony se apoya en varios mecanismos de caché para lograr una performance excelente)
- El conjunto de herramientas incorporadas para generar código automáticamente
Cómo arrancar con Symfony
Sección titulada «Cómo arrancar con Symfony»Arrancar una aplicación con Symfony es bastante simple: sólo se necesita tener composer instalado:
composer create-project symfony/website-skeleton my-websiteCon esto sólo ya tendrás una aplicación Symfony lista para probar!
Una característica importante de Symfony es su interface de línea de comandos. A través de esta utilidad es posible realizar toda clase de tareas como veremos a continuación.
Para ver nuestra aplicación funcionando podemos usar el siguiente comando:
php bin/console server:runLo que hace este comando es levantar un servidor web especial para Symfony (Básicamente se trata de un envoltorio alrededor del servidor incorporado a PHP). Si diriges tu navegador a http://127.0.0.1:8000 podrás ver tu aplicación funcionando.
Estructura del proyecto
Sección titulada «Estructura del proyecto»Las aplicaciones web basadas en Symfony utilizan el patrón MVC, con lo cual, es de esperar contar con elementos para administrar:
- El modelo
- Las vistas
- Los controladores
El directorio donde pasarás la gran mayoría de tu tiempo es src. Particularmente, ahí encontrarás el directorio Controller y Entity. En estos directorios crearás tus controladores y entidades (respectivamente). Las vistas se almacenarán en el directorio templates.
Crear un controlador
Sección titulada «Crear un controlador»Veamos un ejemplo muy simple de una aplicación que saludará al visitante por su nombre (parámetro de la URL). Lo que haremos será crear un nuevo controlador usando este comando:
php bin/console make:controllerY respondiendo las preguntas hasta obtener este código (En el archivo src/Controller/MyController.php):
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\Routing\Annotation\Route;
class MyController extends AbstractController{ /** * @Route("/my", name="my") */ public function index() { return $this->render('my/index.html.twig', [ 'controller_name' => 'MyController', ]); }}Aquí lo que vemos es nuestro primer controlador. Este archivo está acompañado de un template (templates/my/index.html.twig) que hace a la vista:
{% extends 'base.html.twig' %}
{% block title %}Hello MyController!{% endblock %}
{% block body %}<style> .example-wrapper { margin: 1em auto; max-width: 800px; width: 95%; font: 18px/1.5 sans-serif; } .example-wrapper code { background: #F5F5F5; padding: 2px 6px; }</style>
<div class="example-wrapper"> <h1>Hello controller_name ! ✅</h1>
This friendly message is coming from: <ul> <li>Your controller at <code><a href=" '/home/mauro/my-website/src/Controller/MyController.php'|file_link(0) ">src/Controller/MyController.php</a></code></li> <li>Your template at <code><a href=" '/home/mauro/my-website/templates/my/index.html.twig'|file_link(0) ">templates/my/index.html.twig</a></code></li> </ul></div>{% endblock %}Añadir parámetros a la ruta
Sección titulada «Añadir parámetros a la ruta»Para completar el ejemplo que estábamos buscando sólo se necesita hacer algunos pequeños cambios. El controlador debe quedar de este modo:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\Routing\Annotation\Route;
class MyController extends AbstractController{ /** * @Route("/my/{name}", name="my") */ public function index($name) { return $this->render('my/index.html.twig', [ 'controller_name' => 'MyController', 'name' => $name, ]); }}Y el template:
{% extends 'base.html.twig' %}
{% block title %}Hello MyController!{% endblock %}
{% block body %}<style> .example-wrapper { margin: 1em auto; max-width: 800px; width: 95%; font: 18px/1.5 sans-serif; } .example-wrapper code { background: #F5F5F5; padding: 2px 6px; }</style>
<div class="example-wrapper"> <h1>Hello controller_name ! ✅</h1>
This friendly message is coming from: <ul> <li>Your controller at <code><a href=" '/home/mauro/my-website/src/Controller/MyController.php'|file_link(0) ">src/Controller/MyController.php</a></code></li> <li>Your template at <code><a href=" '/home/mauro/my-website/templates/my/index.html.twig'|file_link(0) ">templates/my/index.html.twig</a></code></li> <li>Hello name !</li> </ul></div>{% endblock %}Y ahora está todo listo. Para probarlo dirígete a http://127.0.0.1:8000/my/TU_NOMBRE y verás como la aplicación te saluda.
Componentes importantes
Sección titulada «Componentes importantes»Hay muchísimas cosas por aprender aún pero me temo que no cabe todo en un solo post. Sólo voy a nombrar dos componentes que, si bien no son parte de Symfony como tal, definitivamente conforman dos patas importantísimas del desarrollo basado en este framework:
Espero que este artículo haya despertado tu curiosidad y que pronto decidas profundizar en este excelente framework. Te prometo que valdrá la pena el esfuerzo!
Descarga el código de Qué es Symfony y por qué deberías conocerlo
Aprende qué es Symfony y por qué usarlo. Descubre cómo este framework PHP acelera el desarrollo, mejora la calidad y ofrece herramientas potentes.