Que son y como funcionan los frameworks en PHP

Que son y como funcionan los frameworks en PHP

¿Qué son los frameworks en PHP y para que se usan?

En un primer momento si desglosamos la palabra inicial framework, tendremos un frame o marco, y work o trabajo, con lo que tendremos nuestro marco de trabajo. O traducido para cuando nos adentramos en uno, será nuestro entorno en el que comenzaremos con nuestra página sin tener que redundar sobre las funcionalidades básicas que todos necesitamos como:

  • Tratamiento y validacion de formularios
  • Autenticaciones
  • Conexiones a base de datos
  • Tratamiento de archivos
  • Etc.

O lo que viene siendo toda la parte esencial de nuestra programación para evitarnos tener que codificar lo mismo una y otra vez.

La mayoría de los frameworks funcionan bajo el modelo MVC. Para entender cada una de estas partes por separado, entendermos que:

Modelo
Con toda la información almacenada en Base de datos, XML. El que guarda.
Vista
Lo que viene siendo el HTML, JSON, Imagen... o lo referido a la plantilla (TPL, Smarty, Blade...). El que muestra.
Controlador
La lógica que controla todo (las reglas del negocio), conexiones a bases de datos, comprobaciones... El que lo controla todo.

¿Qué Framework es mejor en PHP?

Es el eterno dilema. Cada programador te dirá una cosa totalmente diferente, pero como las opiniones son libres, también lo son los frameworks en PHP. Los hay con diferentes metodologías, diferentes tipos de sintaxis en la programación en PHP, los hay más "amplios", los hay mas ligeros. Ahí es cuando decides, depende del proyecto que tengas entre manos, cual compensa más.

Siempre tendremos datos como las características base, la cantidad de clases que podemos importar y utilizar luego, no hay que olvidar la "madurez" del framework. Si tiene poco tiempo, tendrá muchas de las nuevas directrices que marca el mundo de la programación, pero por el contrario, puede que estén en beta o RC. Y si optamos por uno que lleve tiempo y esté muy testeado ya no tendremos esas funcionalidades tan actuales.

Claro, eso ya me lo sé, pero ¿alguna opción?

Habrá montones, y la gente tendrá sus predilecciones, ya sea por que se adapte mejor a su proyecto, porque las funcionalidades se le ajusten mejor, sea más rápido o que simplemente te sientas cómodo programando en él. Mi opción (primera y una de las actuales para muchos proyectos) es Codeigniter, en su versión Codeigniter 2.1.4 aunque muy parada su evolución al desarrollo de Codeigniter 3. Mis razones fueron y son, porque es un framework realmente simple, sin tecnicismos ni complicaciones propias del framework (todo, desde el MVC, librerías propias y plantillas (vistas), son en PHP. Con unas directrices simples del modelo MVC que hacen que desde el primer momento cualquier programador se sienta a gusto programando con Codeigniter.

Para su manual de aprendizaje, echarle un vistazo a la Guía de usuario de CodeIgniter Version 2.1.4.

Luego muy de moda, están otros, hablados en otro post al mismo nivel, o más avanzados. En este caso, muy de moda se lleva poniendo desde hace tiempo Laravel para gente con algo de experiencia en frameworks. Con una curva de aprendizaje algo más elevada que Codeigniter, pero con más potencia y automatización de ciertas tareas. Algunos consideran eso un avance, otros consideran que prefieren ir añadiendo clases y funcionalidades en el Framework a medida que se necesiten.

Ya si estás muy preparado, la tendencia para grandes proyectos es Symfony. Con una curva de aprendizaje realmente fuerte, y con una tasa de complicación a ese mismo nivel. El poder del mismo, está también a esa calidad.

Resumiendo los frameworks en PHP

Para iniciar, (y proyectos que no requieran mucho nivel o necesiten velocidad) recomiendo Codeigniter, así como Kohana o Yii. Como un segundo nivel ya pasar a Laravel, aunque ya digo que (mi experiencia) mejora mucho, aunque es mucho más pesado (más de 20Mb Laravel contra menos de 3Mb de Codeigniter) y la rapidez de peticiones que Codeigniter supera en bastante a Laravel. Sabemos que aún así, Laravel mejora en proyectos potentes muchas funcionalidades.

Aunque al final, la decisión es de cada uno...