Posiblemente es la piedra sobre la que se construyen la mayor parte de frameworks y aplicaciones modernas PHP. Laravel, Drupal, Prestashop y próximamente SuiteCRM, hacen uso de alguno de los componentes de Symfony, el más complejo framework PHP hasta la fecha. Es equivalente a ExpressJS, actualmente el estándar de facto en cuanto a frameworks backend en el ecosistema Node.js.
Tal y como hemos hecho con Drupal en un post anterior, vamos a plantear un itinerario formativo accesible a todos los públicos y bolsillos, teniendo en cuenta que Symfony es una herramienta mucho más compleja que Drupal, simplemente por el hecho de que te obliga a tener un conocimiento más profundo de PHP y de ciertos patrones de diseño que en el caso de Drupal.
Pero ¡Quieto parao! No hay que asustarse. Justo ahora, aprovechando que hace poco más de un año se liberó la quinta versión del framework, es el momento perfecto para aprovechar el momento, dejarnos llevar por la inercia del acontecimiento y aprovechar todo el material de formación lanzado para acercar el producto a los desarrolladores.
¿Cómo aprender Symfony?
Personalmente, me resulta muy difícil definir una ruta para llegar a ser un maestro en Symfony simplemente con estudio. Como todo, el propio camino que te marques y los proyectos a los que accedas te requerirán cada vez más esa maestría a la que todos deseamos llegar. Pero bueno, como yo mismo sigo inmerso en ese camino, lo único que puedo hacer por ti es vestirme de Bruja buena del sur y mostrarte el camino de baldosas amarillas...
Saca papel y lápiz para apuntar. Para aprender Symfony sobre todo te vas a apoyar en tres fuentes de conocimiento:
- La plataforma de formación online del ecosistema Symfony: SymfonyCasts. (Inglés)
- La documentación oficial de Symfony. (Inglés)
- El libro publicado por @fapbot. Symfony 5: La Vía Rápida (Español)
Empezamos por lo básico
Este bloque de requisitos básicos es común a la mayoría de tecnología de desarrollo web, como podréis comprobar con los que publiqué en el post sobre Drupal.
- El idioma anglosajón a nivel técnico, sobre todo leído y escuchado, es un "must have" en esta industria.
- Tener una buena base de PHP y sobre todo del Paradigma Orientado a Objetos.
- En el caso de que queráis tener un perfil fullstack y no sólo centraros en un perfil backend, recomendaría tener una base de HTML y CSS.
- Como siempre digo, la consola es tu amiga. En este caso también te pelearás con el gestor de paquetes de PHP, Composer y con el CLI de Symfony.
Recursos formativos gratuitos:
- English for Developers: 15 recursos para aprender por tu cuenta.
- Dentro de la plataforma codigofacilito.com:
- PHP y PHP OOP: Curso de PHP 7 Básico Gratis (6 horas aprox. en Español)
- Dentro de la plataforma freecodecamp.org/learn tenéis el currículum formativo de:
-
Una vez te sientas en tu salsa trabajando con los anteriores lenguajes y herramientas, entramos en faena.
Empezamos con Symfony
En este nivel aterrizarás en el framework, te encontrarás con conceptos como: Patrón MVC, Routing, Controllers, Requests, Responses, Annotation, CLI, Profiler y su barra de herramientas, el motor de plantillas Twig, Assets, Servicios, Webpack, Bundles... y sobre todo con cómo todos estos conceptos se relacionan entre sí para sacarle el mayor partido a Symfony.
Recursos formativos gratuitos:
- La gente de SymfonyCasts tiene publicado un curso gratuito orientado a los recién llegados a Symfony 5: Charming Development in Symfony 5 (2 horas aprox. en Inglés)
- Como recursos de apoyo tenemos:
- El Getting Started de la documentación oficial de Symfony 5 (Inglés)
- Los Pasos 0 a 10 del libro Symfony 5: La Vía Rápida (Español) NOTA 1
Creciendo en Symfony
A partir de este punto empieza lo realmente complejo, al menos para mí, y es que entre el hecho de que Symfony es un framework amplio no acostumbrado a marcar un camino dirigido al desarrollador y que familiarizarte con el uso de los múltiples componentes del framework, así como la cantidad de bundles desarrollados por la comunidad, hace que sea muy complejo avanzar si no accedes a problemas complejos que necesiten soluciones complejas, por lo que desde este momento tu imaginación y la ayuda que encuentres en la comunidad serán clave de éxito en tu mejoría como desarrollador Symfony.
Por fortuna tenemos el libro de Symfony 5, planteado como un proyecto desde cero que te ayudará a pensar y a plantear soluciones como lo haría, en este caso, el creador de Symfony. En este libro podrás aprender a cómo usar:
- Git Flow
- Bundle EasyAdmin
- Events
- Events Subscriber
- Doctrine
- Formularios avanzados
- Uso de APIs
- Testing haciendo uso de Fixtures
- Asincronía con el componente Messenger y RabbitMQ
- Desarrollo de flujos con el componente Workflow
- Notificaciones con correos con el componente Mailer
- Optimización de Caché
- Integración con la herramienta CRON
- Notificaciones a nivel aplicación con el componente Notifier
- Desarrollo de APIs con API Platform
- Contenerización con Docker
Todo ello avanzando paso a paso construyendo el código de una aplicación aparentemente sencilla.
Creciendo en PHP
A la par que crecemos en Symfony, es fundamental crecer también en el lenguaje en el que trabajas y es por ello que hay que conocer PHP en profundidad y estar al día de sus nuevas versiones, por lo que te recomiendo:
- Novedades en PHP 8
- Capacidad para detectar y aplicar Patrones de Diseño
- Aplicar Refactorización
- Principios SOLID
- PHP Code Katas
Formación de pago
Si no te importa pagar para recibir contenido formativo, te recomiendo que te suscribas a:
- Symfonycasts - La plataforma oficial de screencasts de Symfony, en la que encontrarás tanto formación Symfony como de PHP, Javascript, Vue, React, Testing...
- Laracasts - La plataforma oficial de screencasts de Laravel, el framework más popular del ecosistema PHP. Personalmente, creo que es la mejor plataforma de formación relacionada con un framework, con un catálogo impresionante nos ofrece formación en Laravel y su múltiple oferta de extensiones, formación en PHP, formación en frameworks CSS y JavaScript, formación en técnicas de desarrollo, Testing, Tooling...
Notas del autor
- El libro Symfony 5: La Vía Rápida contempla todo un tutorial de un proyecto avanzado, nivel técnico medio-alto, utilizando Symfony 5 pero muy orientado a un escenario real, por lo que su seguimiento puede parecer complejo a primera vista.