Comunidad de diseño web y desarrollo en internet online

Porqué elegir Laravel en vez de Codeigniter

Empezar a programar con PHP nunca ha sido sencillo. El sitio oficial tiene una documentación muy completa de todas las funcionalidades del lenguaje, sin embargo, no es un buen punto de partida para aprender a hacer algo funcional, por ejemplo un módulo con PHP.



Empezando mi carrera autodidacta para ser desarrollador web, recuerdo que imprimí TODA la documentación de PHP y la leí completa durante unas vacaciones.

Hice lo mismo con la documentación de MySQL. Al final no sabía hacer NADA.

Sí me sirvió de referencia aprender qué hacían las funciones del lenguaje, aunque hoy en día sigo consultando el sitio a menudo.


Entonces comencé a buscar tutoriales más prácticos de PHP. Por ejemplo las memorias de un aprendiz. ¿Alguien lo recuerda?

Pero hoy en día si quieres trabajar con PHP además tienes que:

Elegir el Framework adecuado


Esto quiere decir que tenga:

  1. Un desarrollo activo: te garantiza corrección de problemas de seguridad, mejoras, etc.
  2. Una comunidad activa: la vas a necesitar cuando no sepas cómo hacer algo.
  3. Buena documentación: puede ser el mejor framework del mundo pero si nadie sabe cómo usarlo no sirve de nada.


Pero la mayoría de los frameworks ya tienen eso: Symfony, Codeigniter, Laravel, entre otros, entonces:

¿Cuál framework elegir?


Hace unos años atrás era una respuesta difícil, mi decisión estaba entre Symfony y Codeigniter, a mí me gustaba más Symfony pero mi equipo de trabajo prefería el segundo.

Symfony era y sigue siendo complejo, muy difícil de aprender, por otro lado, CodeIgniter muy fácil de aprender porque es muy simple, carece de muchas utilidades necesarias en un verdadero framework.

En Symfony 1.4 gastaba el 80% del tiempo investigando cómo hacer algo y corrigiendo bugs y el 20% ejecutando, mientras que en CodeIgniter solo 20% investigando pero 80% ejecutando.


De vuelta al 2013


Hoy en día Symfony 2 es el framework para PHP más robusto que existe, Fabien Potencier, su creador, es una máquina escribiendo código. Es increíble tener en PHP componentes como el DOM crawler (disponible también en Laravel) que te permite recorrer y revisar desde PHP el código HTML como lo harías con Firebug y eso se lo debemos a Fabien.

Sin embargo, Symfony parece no estar escrito para seres humanos. Sólo algunos pocos privilegiados son capaces de aprovechar todo su potencial.

Lo que hace que muchos se hayan ido a CodeIginter, pero…

Porqué elegir Laravel en vez CodeIgniter


CodeIgniter no ofrece nada más allá de sencillez, después de leerte su documentación en un día y tener que enfrentarte a las necesidades de un proyecto real quedas en frente de una carpeta de modelos vacía preguntándote ¿Y ahora qué? Es allí donde:
  • Si eres experto, instalas plugins o construyes un sub-framework encima de CodeIgniter para suplir sus carencias.
  • Si eres principiante empiezas a lanzar un montón de líneas de código en un controlador.



Codeigniter miente y no tiene ORM propio

Sólo tiene un constructor de queries que ellos dicen que es una versión “modificada” del patrón de diseño Active Record pero eso es falso.

El patrón Active Record permite trabajar tus tablas como si fueran clases y tus filas como objetos, con Laravel puedes (así como con Ruby on Rails):

Código :

$user = new User;
$user->name = ‘Duilio’;
$user->save(); // This is awesome


En Codeigniter sería esto:

Código :

$this->db->insert(‘users’, array(‘name’ => ‘Duilio’); // No active record at all


PHP 5 en adelante está orientado a poner a disposición de sus programadores el potencial de la programación orientada a objetos. Si bien el enfoque de la base de datos de Codeigniter fue funcional en un tiempo, ya quedó en el pasado.

Laravel en constraste tiene un ORM llamado Eloquent y además tiene un constructor de queries llamado Fluent, ambos superan al “Active record” del otro framework.


No incentiva al uso de plantillas en las vistas

En Codeiginiter:

Código :

<ul>

<?php foreach ($addressbook as $name):?>

<li><?=$name?></li>

<?php endforeach; ?>

</ul>


Contrastado con Laravel:

Código :

<ul>
@foreach ($addressbook as $name)

<li>{{ $name }}</li>

@endforeach

</ul>


La documentación de CodeIgniter miente de nuevo al decir que los pseudo-lenguajes de plantillas, como el sistema de plantillas Blade de Laravel, son más lentos en ejecutarse. Esto no es cierto porque todos al final se compilan a código PHP, y lo que se leerá una y otra vez será PHP y no pseudo-lenguaje.

CodeIgniter ofrece un parser de plantillas muy simple, pero éste pierde el concepto de un VERDADERO lenguaje de plantillas: convertir etiquetas de <?=name?> a {{ name }} es sólo la punta del iceberg.

Un verdadero lenguaje de plantillas debe tener herencia de plantillas (layouts) y muchas otras características que Smarty, Twig poseen, allí Blade de Laravel no se queda muy atrás.


Super Controlador al rescate...

Como Codeigniter es tan básico, muchos programadores terminan escribiendo la mayor parte de la lógica de sus aplicaciones en un solo lugar: el controlador.

Por ejemplo la clase de rutas es tan simple, que se queda corta en los proyectos de la vida real y no queda más que lidiar con los segmentos de las URL desde el controlador, donde ya tu aplicación debería saber qué hacer.

Incluso en el mismo núcleo de Codeigniter, el controlador es una especie de super clase que está a cargo de casi todo, como lo demuestra esta imagen:



Al tratar de solucionar todos los problemas en una sola capa estarás escribiendo un código difícil de leer y mantener y no estarás aprovechando las funcionalidades que un framework en el año 2013 debe tener para ti.

Laravel tiene rutas, modelos, eventos, filtros, etc. que permiten que tus controladores puedan verse así:

Código :

    public function edit($user)
    {       
        return View::make('admin.users.form')->with('form', $form);
    }


Puedes configurar una URL users/{id} para que Laravel consulte la BD por ti, te traiga el usuario correspondiente a la ID o lance un 404 si no es encontrado, todo eso antes de llegar al controlador.


En contraste con lo que sería Codeigniter:

Código :

    public function edit($id)
    {
        $user = $this->db->select('users', array('id' => $id));
        
        if (is_null ($user)) $this->error404();
        
        //etc...
    }


Revisen la documentación de Codeigniter vs la de Laravel en el tema de rutas y comparen la diferencia.

Laravel es FÁCIL


Hace años justificaba que la gente trabajara con Codeigniter, Symfony es muy complejo y otras alternativas como CakePHP son inciertas.

Hoy en día en el mundo de PHP tenemos un framework que está bien hecho, combina las mejores prácticas de desarrollo y hace que nosotros, programadores de PHP podamos escribir un código del cual sentirnos orgullosos.

En tu primer proyecto con Laravel usarás el 40% del tiempo para documentarte, otro 40% para desarrollarlo y un 20% para contemplar cuán genial quedó tu código.

Hoy puedes comenzar a dominar un mejor framework desde aquí en Cristalab: Lee su Introducción, Instalación, Configuración, rutas, controladores, plantillas y finalmente crea tu primer módulo con Laravel paso a paso.

Usen los comentarios abajo o mi twitter @sileence si tienen dudas o quieren más tutoriales de Laravel.

¡Saludos!

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate