Mejores frameworks de PHP

Mejores frameworks de PHP

Desarrollo Web

En este artículo queremos explicar qué son los frameworks o entornos de trabajo de programación, su importancia, las ventajas que otorga su uso y por último expondremos cuáles son, a nuestro juicio, los mejores frameworks PHP en 2022.

Antes que nada, ¿qué es PHP?

PHP es un lenguaje de programación orientado a Internet y específicamente al lado servidor. Fue creado en 1994 por Rasmus Lerdorf para desarrollar su propia página web. Este lenguaje, basado en otros como C y Perl, fue ganando popularidad por su sencillez de uso y bajo consumo de recursos de máquina, frente a otros lenguajes que en ese momento dominaban el lado servidor como Java o Visual Basic Script. Hasta el punto de que en la actualidad se estima que el 80% de toda Internet está soportado en el lado servidor por el lenguaje PHP.

Esta página web que estás consultando en este momento está desarrollada utilizando el lenguaje PHP en el lado servidor. Y sí, utilizamos un framework para este desarrollo.

¿Qué es un framework?

Un framework es un conjunto de utilidades de código, pensado para facilitar el trabajo sobre un lenguaje de programación concreto. Hay frameworks para PHP, que es de lo que trata este artículo, pero también frameworks para otros lenguajes como Python, .net, Ruby, Java, etc.

Dicho de otro modo, un framework es un conjunto de ficheros de código con funciones, clases e interfaces adicionales a las que ya proporciona el lenguaje de programación al que sirven, y que permiten a los programadores resolver problemas recurrentes con poco o ningún esfuerzo.

Hay muchas problemáticas que son comunes a todos los proyectos web, aunque cada uno tenga necesidades específicas que hacen que la forma concreta de resolver esa problemática varíe más o menos de un proyecto a otro. Por ejemplo:

  • Manejar la sesión de trabajo de un usuario.

  • Autenticar al usuario.

  • Realizar consultas a bases de datos.

  • Leer y escribir en ficheros.

  • Manejar cachés para reducir los tiempos de ejecución y carga.

  • Protegerse de ciberataques como SQL injections, XSS (Cross-Site Scripting), CSRF (Cross-Site Request Forgeries), session hijacking

  • Etc.

Los frameworks proporcionan herramientas que permiten a los desarrolladores resolver esas problemáticas de manera sencilla, o incluso las resuelven completamente por ellos de forma transparente, permitiendo a los programadores centrarse en las tareas que aportan valor y que son específicas de la lógica de negocio propia de cada proyecto.

Pensemos en un framework como una completa caja de herramientas, frente a tener que realizar un trabajo de bricolaje con recursos naturales como piedras y palos.

¿Cómo se utiliza un framework y qué ventajas aporta?

Básicamente el framework se instala en el equipo del desarrollador, o de cada desarrollador que va a formar parte del proyecto. Utilizando el mismo lenguaje de programación con el que se construyó el framework, en nuestro caso PHP, estos desarrolladores escribirán su código heredando de las clases proporcionadas por el framework, llamando a las funciones programadas en el framework y siguiendo las pautas de desarrollo que los creadores del framework han establecido para poder aprovechar su potencial.

El desarrollo basado en un framework aporta muchas ventajas, tanto individualmente a cada programador como al equipo de desarrollo en su conjunto, frente al desarrollo con el lenguaje PHP básico:

  • Requiere menos desarrollo. Ahorra a los programadores muchísimas líneas de código, que ya están codificadas en los archivos que componen el framework.

  • Aporta soluciones a muchas situaciones comunes, por lo que no es necesario invertir tiempo en pensar la manera de resolverlas.

  • Homogeniza el código entre distintos programadores, que se apoyarán en las funciones y clases del framework en lugar de desarrollar desde cero su propio código.

  • Mejora la seguridad. Como hemos dicho anteriormente, el framework protege tus desarrollos frente a los ciberataques más comunes sin necesidad de hacer nada más.

  • Más fácil de mantener. Al tener menos código y mejor estructurado, siguiendo la forma de trabajar de cada framework, se facilita localizar los archivos responsables de cada microtarea y se requiere menos código para modificar su comportamiento.

  • Es extensible. El propio framework es una extensión del lenguaje PHP, pero puede ampliarse aún más mediante paquetes y librerías de terceros.

No obstante hay que tener en cuenta que cualquier framework, por muy bueno que sea, debe ser bien conocido y adecuadamente utilizado por el equipo de desarrollo, si no se quiere terminar obteniendo una aplicación aún más lenta, insegura y difícil de mantener que si se hubiera optado por el desarrollo básico en PHP.

Los frameworks PHP más utilizados en 2022

Vamos a comentar los 4 frameworks de PHP más populares, aunque como puede verse en la siguiente gráfica extraída de las tendencias de búsqueda en Google de los últimos 5 años, hay claramente dos que destacan sobre el resto: Laravel y Symfony.

Symfony

Symfony es el más veterano de los frameworks PHP de código abierto y hoy en día tiene una muy amplia aceptación, siendo el proyecto de PHP más activo en GitHub. Nació en octubre de 2005 de la mano de Fabien Potencier (SensioLabs) y se encuentra actualmente en versión 6.

Yahoo lo eligió para el desarrollo de Yahoo Bookmarks, pero quizás el hito más significativo de la historia de este framework es que el popular gestor de contenidos Drupal se reescribió completamente en su versión 8 para pasar a basarse en componentes de Symfony.

CodeIgniter

El segundo más veterano de esta lista de frameworks PHP de código abierto es CodeIgniter, lanzado en febrero de 2006. Es muy ligero (solo ocupa 1.2 MB), dejando a los desarrolladores la decisión de incorporar los paquetes que realmente vayan a necesitar. También es bastante rápido, permitiendo elegir diversos mecanismos de caché para acelerar su ejecución. Su curva de aprendizaje es rápida.

Como desventajas de este framework mencionaremos que no cuenta con soporte oficial y que no se recomienda para aplicaciones complejas, ya que está pensado principalmente para desarrollos ágiles.

Zend Framework

Lanzado en 2007 por la empresa Zend Technologies, fundada por Andi Gutmans y Zeev Suraski, quienes colaboraron en su época universitaria con Rasmus Lerdorf en el desarrollo del lenguaje PHP. Entre otras aportaciones, crearon también el motor intérprete de PHP actual, Zend Engine. ¡En el mundo de PHP, esta gente sabe de lo que hablan!

La gran ventaja de Zend Framework es que sus componentes son independientes entre sí, pudiendo incorporar a una aplicación solamente las partes que son necesarias. No obstante requiere una mayor curva de aprendizaje que sus competidores y depende enormemente de la línea de comandos para su configuración inicial y modificaciones posteriores. También destacar que no tiene una estructura de carpetas claramente definida, como sí tienen otros frameworks, por lo que no es fácil que un desarrollador entienda de primeras un proyecto desarrollado por otro con Zend Framework.

Laravel

Laravel es el framework PHP de código abierto más demandado hoy en día. Creado por Taylor Otwell, quien es también su principal impulsor. Su intención era proporcionar una alternativa más avanzada a CodeIgniter y Symfony, basándose en este último en buena medida en su arquitectura e incluso empleando varios paquetes de Symfony.

Se lanzó en junio de 2011 pero no fue hasta la versión 3 en febrero de 2012 que empezó a tener algo más de popularidad, con la inclusión de un intérprete de línea de comandos llamado Artisan que permite generar estructuras básicas de código, y permitía la incorporación de paquetes de terceros. Actualmente se encuentra en la versión 9.

¿Qué framework debo utilizar?

La elección de uno u otro framework depende de varios factores, principalmente:

  1. La experiencia del equipo. Si los desarrolladores conocen ya un framework, seguramente les será más fácil seguir usando el que ya conocen que aprender uno nuevo.

  2. La tecnología heredada. Si no se trata de un proyecto a empezar desde cero, o si la aplicación a desarrollar debe formar parte de un sistema más amplio, seguramente estaremos condicionados por qué framework se ha empleado anteriormente y posiblemente la mejor opción sea mantenerlo.

Nuestra elección: Laravel

Después de haber trabajado en proyectos durante muchos años empleando distintos frameworks, nuestra recomendación es clara:

  1. Si puedes usar un framework, úsalo. En menos tiempo tendrás una aplicación más sólida, escalable y mantenible.

  2. Si puedes elegir libremente el framework, elige Laravel. A día de hoy, Laravel es el framework PHP más utilizado. Sin embargo no lo era cuando empezamos a trabajar con él en la versión 4. Pero tras emplear otros frameworks en otros proyectos no dudamos en apostar por Laravel, ¡y parece que acertamos!

Laravel nos encanta entre otras cosas por los siguientes motivos:

  • Arquitectura MVC (Model-View-Controller). Las fuentes de datos (Modelo) están claramente separadas de la interfaz de usuario (Vista) y del código responsable de aplicar la lógica de negocio (Controlador).

  • Mapeado Objeto-Relacional (ORM, Object-Relational Mapping). Laravel implementa un sistema ORM llamado Eloquent que permite tratar como objetos de PHP los modelos de datos almacenados en motores de bases de datos relacionales, y permite manejar esas relaciones mediante funciones muy flexibles y expresivas. ¡Y lo mejor es que puedes cambiar el motor de base de datos sin tocar una sola línea de código! Tenemos experiencias reales de empleo del mismo código sobre base de datos MySQL y PostgreSQL indistintamente.

  • Sistema de autenticación y autorización incorporados. En minutos podemos tener toda o parte de la aplicación reservada para el acceso por usuarios autenticados, y afinar con total precisión qué usuario puede ver y hacer qué cosas gracias al sistema de permisos de acceso integrado.

  • Motor de plantillas Blade. Blade es un potente motor de plantillas HTML que permite generar la interfaz de usuario con componentes reutilizables, empleando condicionales, estructuras de bucle, etc. Laravel genera código PHP a partir de los ficheros de Blade, que almacena en caché mientras no se modifiquen para mejorar el rendimiento.

  • Utilidades de Consola: Artisan y Tinker. Laravel proporciona un intérprete de línea de comandos llamado Artisan que permite realizar en un instante tareas de menor o mayor complejidad, como generar estructuras de código, borrar la caché, alimentar las tablas de la base de datos… ¡y además es extensible con nuestros propios comandos! Por otro lado Tinker es una utilidad de línea de comandos que permite ejecutar pequeñas porciones de código para pruebas sin necesidad de escribir clases completas para su testeo.

  • Ejecución de tareas programables. Laravel cuenta con un programador de tareas llamado Scheduler, que facilita la ejecución de código con la periodicidad que deseemos. Tan solo hay que configurar un único cronjob que llame a Scheduler (a través de Artisan) y él se encargará del resto.

  • Eventos y Escuchadores. Se puede programar nuestra aplicación para desencadenar Eventos ante ciertas condiciones, y Escuchadores que ejecutan tareas cuando suceden los eventos que están observando. De manera nativa, Laravel lanza ya una serie de eventos pero deja a la libertad de los programadores el añadir los nuestros propios, así como el crear los Escuchadores que reaccionen ante ellos.

  • Desarrollo orientado a pruebas (TDD, Test-Driven Development). Laravel soporta la ejecución de pruebas unitarias basado en el popular PHP Unit, así como la posibilidad de escribir y ejecutar de forma individual nuestras pruebas a través de la consola, utilizando Artisan. Si los desarrolladores lo desean, es fácil adoptar con Laravel una metodología de desarrollo orientado a pruebas.

  • Extensible por un sistema de paquetes. Laravel utiliza el popular gestor de paquetes Composer para instalar las dependencias de paquetes propios y de terceros, y permite añadir todos los paquetes adicionales que sean precisos para conseguir funcionalidades que inicialmente no proporciona Laravel, como por ejemplo manipular imágenes, generar ficheros PDF o leer y escribir archivos de Microsoft Excel. Entre estos paquetes, existen varios y de gran calidad desarrollados por el propio equipo de Laravel.

Gracias por leernos. Si tienes un proyecto web que comenzar o simplemente quieres mejorar un proyecto Laravel que ya tengas en marcha, ¡contacta con nosotros y podremos ayudarte!