¿Qué framework de PHP debería elegir?

Características a tener en cuenta al elegir framework

Probablemente casi todos los desarrolladores que eligen un framework de PHP para trabajar con él por primera vez, lo hagan sin pensar demasiado en lo que puede o no puede hacer. Quizá por una recomendación, simplemente por probar o ambas, pero al trabajar en un proyecto tenemos que tener en cuenta que cosas podemos esperar de un framework y cuáles no. Veamos las característica más importantes a tener en cuenta.

Logos Frameworks

Módulos disponibles

Casi todos los framework en PHP tienen una serie de librerías, módulos o helpers (cada uno lo llama de una forma) que básicamente consisten en una serie de funciones “extra” que tenemos disponibles para trabajar con ellas. Normalmente se agrupan en archivos, como funciones relacionadas con arrays, o funciones relacionadas con strings.

Un ejemplo de este tipo de funciones puede ser repeater(), del helper de strings de CodeIgniter que hace simplemente esto:

1
2
$string = "No volveré a decir tacos en clase.";
echo repeater($string, 5);

En la salida repite 5 veces la frase dada. Es una función de utilidad discutible, puesto que sustituye a un simple for de manera elegante, pero tomémoslo como un ejemplo de funciones que aportan los framework y que no tenemos que implementar. Hay algunos módulos, por ejemplo para parsear RSS, o lidiar más fácilmente con las bases de datos.

Versión de PHP

Quizá no parezca importante para trabajar en nuestros ordenadores, pero no siempre tenemos acceso a la última versión de PHP, así que es importante tener claro si vamos a trabajar en una versión u otra qué framework elegir.

Desarrollo activo

Es de suma importancia que elijas un framework que se encuentre bajo desarrollo activo. Es decir, que el autor o autores no hayan abandonado el proyecto hace tiempo. Esto es básicamente por dos razones:

  1. Cuando tengas una duda habrá desarrolladores para contestarla, interesados también en el framework. Si no estuviera bajo desarrollo, nadie se preocuparía de usarlo y no habría nadie que te pudiera ayudar.
  2. El desarrollo de PHP afectará al desarrollo del framework por lo que mejorará. La implementación interna de los frameworks de PHP es, lógicamente, en PHP. Como sabrás es un lenguaje que está en un desarrollo intensísimo, y muchas funciones se convierten en deprecated (antiguas, que no se aconseja su uso) en poco tiempo. Si el framework está evolucionando corregirá este tipo de implementaciones con las nuevas versiones proporcionadas por PHP.

A veces también conviene tener en cuenta quién está detrás de cada framework. Por ejemplo detrás del framework Zend está la empresa que fue fundada por los creadores de PHP tal y como lo conocemos hoy. Así que es casi una garantía de éxito que ese framework llegara a triunfar.

Modelo Vista Controlador (MVC)

Modelo Vista Controlador es un patrón de diseño que se basa en dividir la implementación en tres partes:

  • Modelo. Normalmente es la representación de la información. Si vamos a tratar con coches y hacemos una clase “coches”, esta clase será nuestra parte modelo, a grandes rasgos.
  • Vista. La interfaz de usuario, en desarrollo web suele ser la propia web con el HTML y CSS.
  • Controlador. El encargado de recibir acciones y actuar en consecuencia, por ejemplo, si el usuario rellena un formulario y me lo envía en controlador será el encargado de manejar esa información.

Además, y sin entrar en muchas más profundidad sobre el tema para no desviarnos, hay relaciones entre estas partes, las más importantes suelen ser estas:

Esquema Modelo Vista Controlador

Por lo tanto si queremos desarrollar con este patrón tenemos que ver si el framework está orientado a él o no. Aunque te adelanto que la mayoría lo están.

Curva de aprendizaje

Esta no es tanto una característica interna de los framework, sino más bien una consecuencia de trabajar con ellos. Normalmente a mayor complejidad y funcionalidad más tiempo se tarda en aprenderlo. Mi consejo aquí es que si vas a tardar más tiempo aprendiendo el framework que utilizándalo estás usando el framework equivocado.

Es decir, el tiempo que le vayas a dedicar a aprender como usar el framework si no lo conoces, debe ser proporcional al tiempo que vaya a durar un proyecto.

Necesidades propias

Hay muchas más características que podríamos estudiar antes de decidirnos pero como receta general solo se puede nombrar las anteriores, básicamente, porque el resto dependerá de las necesidades del proyecto. Así que si tienes oportunidad investiga un poco más sobre cada característica que te ofrezca el framework que elijas. Porque cada uno tiene una serie de propiedades, que intentaré comparar a contuación y que lo hacen único.

Comparativa de frameworks famosos

Esta comparativa se basa en datos recopilados en diferentes webs y en las oficiales de los propios frameworks. He destacado ciertas características más o menos importantes, como puedes ver casi todos tienen de todo, siendo el más completo Zend Framework, pero quizá el que más tiempo se tarda en aprender, aunque esto depende mucho de la experiencia previa que tengas como programador y de la persona en sí.

Comparativa Frameworks Famosos

Algunas características pueden ser discutidas, puesto que se pueden conseguir instalando algo extra de manera relativamente sencilla, pero he intentado representar lo que trae el framework “de fábrica” y que realmente está listo para ser usado.

Uso de módulos independientes

Se ha destacado la facilidad de uso de módulos independientes sin tener que depender del resto del framework.

ORM

ORM (Object Relational-Maping o Mapeo objeto-relacional) es una técnica que simboliza los datos que tenemos en una base de datos con clases. De tal forma que tendremos, por ejemplo, una clase coche con los atributos X e Y y una tabla con los mismos atributos. Lo cierto es que salvo operaciones concretas no afecta demasiado al rendimiento, y facilita enormemente la programación, reduciendo líneas de código. Haré un post sobre esto en el futuro, así que no te preocupes si no lo entiendes completamente.

Otras alternativas

Frameworks de PHP menos famosos

Además de las alternativas mencionadas, las más famosas y utilizadas hay muchísimas más bajo desarrollo que están emergiendo y que se merecen también que le echemos un vistazo. Algunos de ellos son: Prado, Yii o Akelos, aunque hay muchos más.

DIY (hazlo tú mismo)

Hay muchos defensores de que el mejor framework que puedes usar para programar es el que te construyas tú mismo. Es decir que poco a poco crees una serie de librerías y estructuras de directorio hechas por tí y las utilices en varios proyectos.

En realidad es un ejercicio genial que te aconsejo encarecidamente que hagas. Te enseñará mucho de programación, pero por otra parte a veces no hay tiempo y en muchos proyectos se utilizan frameworks por el simple hecho de que están testados en muchas situaciones y el desarrollo sobre ellos en mucho más rápido.

Trata de identificar cuando realmente necesitas un framework, porque no siempre hará falta, y a veces la intención inicial de hacer el proyecto más rápido puede resultar en horas buscando documentación de funciones que no conoces por el simple hecho de utilizar el framework en vez de PHP simplemente.

Conclusiones

Como habrás podido ver elegir un framework no es algo fácil, sobre todo si el proyecto va a llevar mucho tiempo. Cosas como la documentación o el soporte de ciertas funciones de manera nativa pueden resultar en horas ahorradas de implementación, así que piénsalo bien y trata de echarle un vistazo a varios antes de elegir uno.

Aquí dejo una serie de enlaces para entender más en profundidad los diferentes frameworks y ciertos términos que hemos visto como MVC u ORM.