De Codeigniter a Laravel

Últimamente he estado trabajado con CodeIgniter (aka CI), pero no me han gustado ciertas cosillas:

Es fácil de sobreescribir los métodos nativos para que se adapte a tus necesidades (lo cual en principio es bueno) … pero después de un tiempo se he ido sobrescribiendo tantas cosas que parece otro framework.

Tiene una mezcla extraña de php4 y php5 y me resulta incomodo el uso que hace del $this en los controladores.

Hace poco leí sobre lavarel y, decidido a probarlo, postearé algunas de las impresiones que me plantee.

 

Estructura HMVC.

Ni CI ni lavarel tienen nativamente una estructura HMVC. Pero a diferencia de CI, que se puede implementar fácilmente sobreecribiendo el core – lo que decía antes- , en Laravel no le veo mucho sentido.

Nunca le he visto demasiado sentido a HMVC en CodeIgniter. Algún compañero me comentaba la utilidad de tener las librerías, css, modelos, javascript más ordenados. E incluso de poder usar módulos como librerías independientes. A mi no me gusta. Al final siempre tenía los módulos demasiado interconectados usando modelos o librerías compartidos, los javascripts regados por todos los módulos … etc. Quizás es mala planificación o sólo cuestión de gustos. Pero me parece que Laravel lo resuelve mejor. Usas una estructura clásica MVC y aquello que quieras que funcione como una miniaplicación independiente, parece que se puede programar como una especie de plugin que llaman ‘Bundle’. Me siento más cómodo con esa idea.

 

ROUTES.

En lavarel tienes que mapear cada ruta al controlador. Al principio me parecía un poco coñazo, pero creo que puede resultar más eficiente.  También te permite definir  en  /controladores clases genéricas de las que deriven otros controladores (ej. Base_Controller) sin peligro de ser accedidas desde la web (al no estar mapeadas en rutas)

 

Además se pueden usar funciones anónimas (clousures) directamente en las rutas. Haciendo innecesario tener que definir acciones.

CONTROLLERS

Me ha gustado especialmente que Laravel tenga en muy en cuenta la creación de apis y permita definir acciones en el controlador según la cabecera HTTP.

 

 

 

 

 

 

 

Posted in php