Desarrollar un proyecto personal o comercial trae muchísimos desafíos, todos los proyectos requieren de ciertas características comunes como lo son el manejo de rutas, acceso a la base de datos, organización de la estructura del proyecto, seguridad, etc. Además de esto cada sistema tiene características y lógica propias del sistema (lo que llaman capa de dominio o lógica de negocios), por ejemplo si estás creando un sistema de facturación, además de preocuparte por cómo validar números enteros o direcciones de emails, también debes preocuparte por temas legales como impuestos, etcétera.
Es por lo anterior que usamos frameworks, porque nos ayudan a cubrir estas características comunes, de manera de poder usar el tiempo extra para enfocarnos en la lógica de nuestra propia aplicación, en vez de perderlo aprendiendo cómo acceder a la base de datos o enviar un email con PHP. Además los frameworks tienen comunidad, documentación, son probados por decenas de miles de usuarios, y contienen cientos de pruebas automatizadas, etc. y esto nos da una mayor tranquilidad para implementar en producción versus esa clase de validación que creamos en un par de horas y nadie nunca ha usado o probado.
Por lo tanto un framework debería ser una parte fundamental e indispensable para tu desarrollo si quieres crear aplicaciones realmente modernas y ser eficiente, y es por ello que es muy importante:
Elegir el Framework adecuado
Es decir que tenga un desarrollo y una comunidad activa, que posea buena documentación, que cumpla con estándares, buenas prácticas de desarrollo, uso de tecnologías modernas del lenguaje y del ecosistema etc. y además que sea fácil y divertido de usar.
En cuanto a facilidad puedo decir que Laravel y Codeigniter son muy fáciles de aprender a usar, pero hay importantes diferencias:
Por qué no debes usar CodeIgniter
CodeIgniter tiene una serie de carencias que ya no son justificables en el 2016, y aunque sus nuevas versiones resuelven algunos de estos problemas aún está muy lejos de lo que debería ser un framework de PHP en este año 2016 y de los estándares y características que poseen frameworks como Laravel y Symfony.
Instalación de CodeIgniter vs Laravel
El argumento más repetido que escucho entre quienes aún defienden a CodeIgniter es que es mucho más fácil de instalar que Laravel, porque sólo descargas un .zip lo descomprimes en una carpeta y listo ¿Quien necesita un manejador de dependencias como Composer, cierto? Laravel por el contrario tiene 2 repositorios laravel/framework y laravel/laravel. El primero es el núcleo del framework (todo el framework como tal con sus clases, libraries, pruebas, etc.) Mientras que el segundo es el proyecto base. Para que el proyecto base funcione necesitas descargas todas sus dependencias a través de Composer y así cada vez que alguien instale o quiera actualizar el proyecto. Con CodeIgniter el framework y el proyecto base son lo mismo. La única diferencia es que el framework se encuentra en la carpeta system/ (lo que más o menos en Laravel podría ser la carpeta vendor/).
Ahora bien mucha gente dice que descargar el archivo, descomprimirlo en una carpeta y mover la carpeta a tu directorio de proyectos es una instalación más sencilla, con Laravel por el contrario, la instalación es abrir la consola y escribir esto:
cd Projects/ laravel new my-new-project #o la alternativa: composer new-project laravel/laravel my-new-project
Por supuesto antes debes instalar Composer y/o el instalador de Laravel, pero esto sólo tienes que hacerlo una vez.
Ahora aunque el comando te parezca por alguna razón más complicado, ¿Qué pasa si hay una vulnerabilidad en CodeIgniter o en Laravel y debes actualizar el framework?
En CodeIgniter debes descargar la nueva versión del framework, descomprimir la carpeta, copiar la carpeta system/ irte a la carpeta de tu proyecto, borrar la carpeta system/ actual, pegar la nueva carpeta, revisar que todo haya quedado bien… En Laravel:
cd my-new-project composer update
Todas las dependencias no sólo de Laravel sino de todos los paquetes de terceros que tu proyecto esté utilizando serán actualizadas automáticamente y podrás ver una confirmación visual en la consola sobre qué versión de Laravel y de cada paquete estás usando. También podrás ver si ocurrió un error o hay un conflicto de versiones.
La instalación de CodeIgniter que te da ilusión de ahorrar tiempo, en realidad terminará haciéndote perder mucho más en actualizaciones o terminarás trabajando con un proyecto inseguro.
Recuerda que los frameworks son desarrollados por personas que cometen errores y es importante que mantengas tu proyecto actualizado.
PSR-2, PSR-4, Namespaces, y estándares en general
Por lo que puedo ver en GitHub, el código de CodeIgniter 3 no cumple con el patrón de organización de código PSR-2, ni tampoco con PSR-4, de hecho las clases no tienen namespaces, dado que CodeIgniter 3 soporta PHP 5.2 o superior. Ahora este es otro de los puntos donde algunos argumentas: «oh entonces es mejor porque CI soporta más versiones de PHP que Laravel (que requiere en su versión actual al menos PHP 5.5) y esto también es una mentira. Recuerda: los programadores cometemos errores, dejamos problemas de seguridad en el código, etcétera. A ti te conviene que tu proyecto use una versión nueva de PHP que es más segura, contiene más features y si hablamos de PHP 7 es en algunos casos el doble de rápido que PHP 5. ¿Por qué seguir trabajando con una versión de PHP marcada como obsoleta hace mucho tiempo ya?
CodeIgniter 4 al fin soportará nombres de espacio, PSR-4 y requerirá de PHP 7, lo cuál me parece lo más acertado, sin embargo el código no parece soportar aún el estándar de organización PSR-2 y además recuerda que PSR-4 y los nombres de espacios son soportados desde la versión 4 de Laravel. Por decirlo de alguna forma, por usar CodeIgniter has estado varios años atrás de lo que debería ser el desarrollo moderno con PHP.
El ORM de CodeIgniter es muy pobre
Eloquent de Laravel es un gran ORM, con muchísimos features y un desarrollo constante. Si me tocara armar mi propio framework probablemente intentaría usar Doctrine, otro ORM con un enfoque diferente pero muy robusto.
Por otro lado CodeIgniter no tiene un verdadero ORM, lo que tiene parece más un constructor de consultas SQL con interfaz de OOP (aún más sencillo que Fluent en Laravel) que ellos dicen que es una versión “modificada” del patrón de diseño Active Record pero es mentira.
En el patrón Active Record puedes interactuar con las tablas de la base de datos como si se trataran de clases y con las filas como si fueran objetos
Laravel:
$user = new User; $user->name = ‘Duilio’; $user->save();
En CodeIgniter:
public function update_entry() { $this->title = $_POST['title']; $this->content = $_POST['content']; $this->date = time(); $this->db->update('entries', $this, array('id' => $_POST['id'])); }
El modelo en CodeIgniter 4 parece más completo, sin embargo sigue estando literalmente a años de desarrollo detrás de sus contraparte Eloquent y Doctrine.
Acceder a $_POST de esa forma sin ningún tipo de validación es inseguro.
Comunidad y desarrollo activo
Ambos frameworks tienen una comunidad bastante activa, soporte, etc. Sin embargo a nivel de desarrollo, Laravel tiene casi el triple de colaboradores en GitHub que CodeIgniter 3 (995 vs 392 al momento de escribir este post), de igual forma Laravel tiene más commits y versiones que CodeIgniter. Tampoco hace falta mucho tiempo revisando el código fuente para darse cuenta que la calidad del código de Laravel es muy superior, tiene muchos más features y una cobertura mayor de pruebas automatizadas.
Además encontrarás muchísimos más paquetes para Laravel (que realmente aprovechan el poder de Composer) y muchísimo material para aprender Laravel.
Popularidad
Mientras que ambos frameworks son muy populares, Laravel (en azul) cada vez gana más popularidad mientras que la popularidad de CodeIgniter (en rojo) mengua, y yo imagino que quizás en un futuro pueda existir un framework de PHP que compita contra Laravel pero estoy seguro que no será CodeIgniter 4.
Laravel es muy fácil de aprender
El cambio a veces es duro, pero cambio muchas veces significa evolución, y éste es el caso de Laravel. Cuando comiences a entenderlo y a usarlo en tus proyectos te darás cuenta de que no querrás volver atrás, aunque creas en este momento o no las razones expuestas en el post.
¿Usabas CodeIgniter y te cambiaste a Laravel? Por favor cuéntale a la comunidad en los comentarios cómo te fue.
Material relacionado
- 5 maneras de comprobar que escribes un buen PHP
- Curso gratuito primeros pasos con Laravel 5.*
- Serie sobre Composer, manejador de dependencias de PHP
- Curso de programación orientada a objetos con PHP
Regístrate hoy en Styde y obtén acceso a todo nuestro contenido.
88 Responses to “Porqué elegir Laravel en vez de Codeigniter”
Un placer leer tu columna, un excelente resumen Duilio, sigo tus tutoriales aprendí mucho de tí cuando me inicié en el mundo Laravel. Aunque no mencionaste nada del hermano menor Lumen que es una excelente distribución para aplicaciones SPA, y esto gracias a Laravel.
Sí, se me pasó mencionar a Lumen en el post, como otra opción ligera y aún muchísimo mejor que CodeIgniter.
En lo particular trabaje con CodeIgniter unos años y puedo asegurar que a la larga se me hizo muy complicado mantener un sistema en este framework, no por ello digo que es malo utilizarlo como opción, pero le falta pulir algunos detalles a diferencia de Laravel, el cual ha sido más trabajado, su curva de aprendizaje es media y sus beneficios muy elevados.
Cambiarme a Laravel ha sido la mejor decisión que he tomado.
La mayoría de los servidores compartidos tienen instalada 5.2 – 5.4 (la 5.4 es compatible) y en muchos casos no cuentan con la extención mcrypt y otras que requiere.
He trabajado poco con laravel y es algo rebuscado el enrutamiento, blade es una porquería.
Codeigniter es un atleta delgado, de baja estatura no tan vistoso, laravel es un Ronaldo con sobrepeso.
Trabajar con versiones antiguas de PHP es sumamente inseguro y está totalmente desaconsejado en la página oficial de PHP. Por no decir que es sumamente improductivo no poder usar los nuevos features del lenguaje.
Ese no es un argumento por el cual deba usarse laravel y no otro. La programación depende del desarrollador, no del framework. Igual las malas prácticas, no se necesita una jaula para programar bien, se puede mantener un perfecto orden en codeigniter, se puede extender mediante bibliotecas y extensiones de sistema sin dificultad, no es una mezcla de frameworks y recursos de terceros como lo es laravel.
Codeigniter está por lanzar la versión 5, no he seguido de cerca sus publicaciones para decir si está basado en PHP 5.5, 5.6 0 7.
Si se trata de seguridad, modernidad y frameworks podemos hacer pedazos a PHP (empezando por permitir malas prácticas) si lo comparamos con otros lenguajes de programación.
1. Debes usar una versión moderna y actual del lenguaje con el que estás programando, sobretodo si este es de lado de servidor y no hacerlo trae problemas de seguridad.
2. Debes usar un framework que aproveche dichas características del lenguaje (en este caso Laravel fue creado para PHP 5.3).
3. A menos que tengas todo el tiempo y el presupuesto del mundo y seas un experto en programación, la elección del framework sí va a afectar en la calidad del código y del programa final que vayas a entregar. Te lo puedo decir con propiedad porque yo he trabajado con symfony 1.4 y 2, con Laravel 3, 4.* y 5.*, con mi propio framework e incluso con CodeIgniter y todos esos proyectos lucen bastante diferentes.
4. CodeIgniter versión 4 no 5, y pide PHP 7 como mínimo, lo cual me parece acertado y lo dije en el post. Esto me deja entender que no te detuviste a leer el post con calma.
5. PHP 7 en adelante es un gran lenguaje, muy rápido, seguro, etc.
1.- Estoy de acuerdo, pero tambien hay que considerar que PHP 7 tiene poco (menos de un año si no me equivoco) y todavía puede presentar cambios antes de convertirse en una versión estable y estándar en los servidores compartidos. Como comenté, las versiones de los servidores más conocido es entre 5.2 y 5.4. En lo personal desarrollo sobre 5.6, aunque repito, esto no es un argumento fuerte para usar laravel, ya que se puede adaptar codeigniter a PHP7, y en ese caso ¿ya no será inseguro?. ¿Qué inseguridad tiene usar 5.3 y por qué es más segura la v7?
2.- Debes usar lo que se acople a tus necesidades, es un tanto innecesario usar un framework de +30MB para crear un blog, o un sitio informativo, o una API. Lo que sí me gusta de laravel es su ORM, pero no me parece ni mejor ni peor que el falso active record de CI.
3.- No soy un experto, y la calidad de mi código no considero que sea mala, trato de tener mejores prácticas cada vez y ordenar el código de la mejor manera. ¿PSR? El objetivo es desarrollar con el menor código posible y la mayor eficiencia y evitar el spaghetti, es lo que una aplicación exige, hay estándares y para trabajo en equipo no siempre aplican los estándares PSR.
4.- Veo que no te diste el tiempo de comprobar lo que he dicho, la versión versió 5 está en desarrollo, así lo dicen en el foro: http://forum.codeigniter.com/thread-64843.html.
5.- No dudo que tenga mejoras, pero hay que trabajar con las versiones estándares mientras lo moderno se acopla y se estandariza. Cito a GO, GO es un lenguaje prometedor, pero no tiene mucho sentido comenzar a desarrollar si en una versión futura tendrá cambios radicales. Menciono Polymer 0.5 y 1, como ejemplo.
Fernando lo de CodeIgniter 5 es una broma del día de los inocentes, mira el título de la página y la descripción de las características. La versión en desarrollo es la 4, ya revisé todo con bastante cuidado antes de escribir el post. Si quieres tomar o no los consejos descritos en el post, queda de tu parte, yo me limito a informar basado en experiencia, análisis, etc.
Saludos.
Es correcto, no me dí cuenta de la fecha. Te falto un poco de investigación sobre CI, en CI no se usan las variables globales post y get, en cambio de usa input. Esto le quita algo de inseguridad a la situación.
¡Saludos!
Como comentaba en otro lugar yo sé que CI tiene su objeto «input», pero yo copié el ejemplo directamente de la documentación de Codeigniter, que sé que lleva al menos 8 años así. Deberían en tal caso acomodar la documentación, porque la gente copia y pega muchas veces sin leer lo suficiente. En Laravel por otro lado nunca verás referencia a $_POST directamente. Por lo que estoy seguro que muchos desarrolladores de CI usan $_POST aunque sea una o dos veces en su aplicación. Probablemente haya desarrolladores trabajando en Laravel que también lo hagan, pero estoy seguro que en un menor porcentaje.
En defensa de codeigniter, es más fácil que puedas encontrar la clase input y puedas analizar los métodos. En cambio, con laravel tienes un sin fin de carpetas con infinidad de archivos (muchos de terceros).
Codeigniter tiene documentación pequeña y todo está ahí.
Platicando con un colega que usa laravel, no conoce la clase STR, Lo cual habla de que no todos leen documentación, o por lo menos no toda.
Desarrollador que se respeta ya leyó la documentación de sus respectivos frameworks. En tu caso, si harás referencia a CI y conoces el objeto input, lo correcto sería hacer referencia a él, incluso citando que la documentación no está actualizada.
:)
Viendo la imágen está mal usar input, o $_GET/POST en el modelo.
La próxima versión de CI es la 4 y sera solo para PHP 7, lo de otros lenguajes se sale de contexto ya que se esta opinando de dos frameworks
Se habló sobre lo «inseguro que es PHP».
Así es, CI es para PHP7. En lo personal sigo trabajando con CI2, con algunas librerías propias y adaptaciones de otras para CI3. El desarrollo en su mayoría está para CI2 y versiones inferiores como 1.8.
Viendo CI4, no cambia mucho, estuve revisando el proyecto en github y sólo se agregaron namespaces.
La gran mayoría de servidores tienen PHP5.4 (la retrocompatibilidad es importante), y PHP7 tiene poco de haber sido liberado, necesita probarse más para migraciones, mi humilde opinión.
Nunca he trabajado con un Framework.
Estoy por iniciar un proyecto y por los requerimientos me he ecidido investigar un poco sobre los frameweorks, en una charla en un MeetUp php, alguien decia que para iniciar a usar frameworks recomendaba iniciar con CodeIgniter y despues con Laravel.
Ahora que necesito un framework me he dedicado los ultimos dias a buscar viedetutoriales sobre Laravel y he queado sorprendido, me digo yo mismo «Que he estado hacieno todo este tiempo, debi aprender Laravel dese cuando!!».
Hace menos de una hora he terminao el curso «Laravel para principiantes» y de verad que me he decidido por usar esta maravillosa herramienta. Aprovecho para agradecer a Duilio por el material, de verdad me ayuado mucho para iniciar.
Buen día Cano, gracias por tus comentarios. Sí, a mí me parece un desperdicio comenzar con CI y luego pasar a Laravel, sobretodo porque en CodeIgniter actualmente hay muchas malas prácticas de desarrollo y no se siguen los principales estándares de PHP.
Además de esto quiero invitarte a registrarte en Styde para que puedas seguir aprendiendo con nosotros y también ayudarnos a que sigamos creciendo para ti y el resto de la comunidad: https://styde.net/planes/
Muchos saludos.
Muy buen Post .
Gran parte de lo que he aprendido de Laravel lo he hecho gracias a ti, puedo decir que estoy enamorado de Laravel y espero pronto llegar a ser un programador Senior como tu.
Saludos !
Si le dedicas al menos una hora al día seguro que sí, Rigoberto.
Para hacer una comparación hay que tener cierta experiencia. En tu caso la experiencia con CodeIgniter es ínfima y eso te ha llevado a decir cosas que no son ciertas. La más clamorosa es lo que dices de la obtención de parámetros POST.
Al menos yo estoy colocando mi nombre y mi cara detrás de mi opinión «Yo mismo» y sé que se pueden acceder los datos con $this->input->etc… yo menciono que en la DOCUMENTACIÓN de CI usan $_POST y no debería ser, porque la gente lo va a copiar y pegar y lo va a usar así. Espero que algún día te animes a probar Laravel, en Styde hay un curso gratuito para comenzar.
Saludos.
No sé qué documentación has visto tú de Code Igniter, pero es evidente que no es la misma que hemos visto los demás. Y lo de decir que «la gente va a copiar y pegar» para argumentar lo que se dice en el artículo… voy a hacer como que no lo he leído porque el demasiado pueril. No necesito ningún curso de Laravel, y mucho menos de iniciación.
Leí la documentación oficial en Codeigniter.com ¿Hay otra página acaso? Aquí te dejo el enlace:
http://www.codeigniter.com/user_guide/general/models.html?highlight=model
Para todas las referencias a $_POST en el sitio de Codeigniter:
Busca en Google: https://www.google.com/search?q=site:codeigniter.com+$_POST
Ahora busca https://www.google.com/search?q=site:laravel.com+$_POST
No pasa nada «Yo mismo» puedes seguir usando Codeigniter, pero si te sientes tan orgulloso del framework deberías defenderlo con tu nombre y apellido.
Saludos.
¿Qué importa el nombre y apellido, «Duilio Palacios»? ese «Yo mismo» esta argumentando una cosa y tu te vas por las ramas cambiando el tema y tratando de desacreditar a esa persona, eso dice mucho de tí, «Duilio Palacios»
Por cierto, que raro que no hayas comentado la diferencia de peso de ambos frameworks, algo clave
¿La diferencia de peso de los archivos? Al menos que estés usando un hosting compartido con 5Mb de espacio, no tiene la menor importancia.
Yo también me he quedado flipado de su manera de «argumentar». Dice mucho de él, estoy de acuerdo.
Qué guerra te da mi nombre, eso no va a cambiar nada. Soy Gorka Perez. ¿Ya te has quedado más tranquilo? ¿Ahora ya cumplo los requisitos para que me tengas en cuenta? ¿Lo que diga ahora va a cambiar lo anterior?
Yo no es que me sienta orgulloso de CI, simplemente he intentado hacer justicia porque tu desconocimiento solo servía para manipular erradamente. Toma campeón, para que leas algo antes de escribir: http://www.codeigniter.com/user_guide/libraries/input.html
Yo sé acerca de esos helpers, lamentablemente la documentación de CI no los usa, yo copié un ejemplo tal cual de la documentación de Codeigniter actual:
https://codeigniter.com/user_guide/general/models.html https://uploads.disquscdn.com/images/9062067c82ec4650cd8993eb9d470e563fbec27e6b3618410218eda6dfe550a3.png
Puedes entonces ir a reclamarle al autor de la documentación que no tiene aparentemente suficiente conocimiento del framework, pero ya yo no voy a seguir discutiendo sobre el mismo tema una y otra vez.
Vamos a ver alma de cántaro. no se trata de ningún helper, es una librería y se llama Input, lo tienes arriba del todo en el enlace que te he pasado. Veo que no distingues tan siguiera qué es un helper y qué es un librería en CI. Pero es que aunque hubiera sido un helper, los helpers forman parte del propio framework. Y aún hay más, que no aparezca el uso de una librería concreta del framework en un ejemplo donde lo que se pretende es hacer foco en lo que se quiere ejemplificar no significa nada, mira los ejemplos de la propia librería, no mires ejemplos que no vienen al caso. Pero es que además, qué guerra te dan los ejemplos, solo sabes mirar ejemplos? no te lees la documentación? Si hubieses mirado los ejemplos de la propia librería te habrías dado cuenta. Tu experiencia con CI es tan ridícula que nunca deberías haberte lanzado a compararlo. Como ya te he demostrado está dentro del framework y está incluso documentado. No vengas ahora argumentando que como en un ejemplo no lo usan, entonces te puedes permitir el lujo de decir que lo malo de CI es que la lectura de parámetros POST es insegura y todas las burradas que has dicho.
En mis 10 años desarrollando con PHP, me tocó trabajar en varios proyectos de CodeIgniter. Que no te conteste con la terminología exacta no quiere decir nada. El ejemplo lo tomé de la documentación, que por cierto es otro punto a tomar en cuenta, la extensión de la documentación de un framework vs el otro en el tema de modelos:
https://laravel.com/docs/5.3/eloquent
https://laravel.com/docs/5.3/eloquent-relationships y otras 3 páginas
VS CI:
https://codeigniter.com/user_guide/general/models.html
Los modelos en CI según tengo entendido son más como una capa para encapsular las consultas a tu base de datos, pero en realidad mucho del trabajo queda de parte del programador. Mientras que en Laravel tienes un ORM completo para crear consultas, trabajar con relaciones (uno a muchos o muchos a muchos, etc.) de forma muy sencilla.
Eso fue lo que quise explicar en mi punto de comparación de ORMs.
Hay muchos otros temas muy importantes como por ejemplo el tema del testing, siendo que Laravel incluye un componente de pruebas automatizadas, o es posible usar Codeception, mientras que en CodeIgniter no veo una alternativa sencilla a simple vista para crear pruebas funcionales o de aplicación (como quieras llamarlas).
Hay mucha tela que cortar al comparar a ambos frameworks, pero yo voy a continuar con la discusión de si se debe usar $_POST o no, obviamente NO se debe usar y deberían mejorar la documentación para evitar posibles malentendidos entre principiantes que quieran utilizar el framework. Pero ya eso queda de parte de los desarrolladores de CI.
Saludos.
No te vayas por las ramas, que veo que te gusta mucho. Los ORM no tienen nada que ver en esta discusión y te voy a decir más, que no sabías; En CI se puede poner el ORM que quieras. El que viene con Laravel es Eloquent y lo puedes poner en CI. Y eso de «según tengo entendido», «no veo una alternativa sencilla»,… demuestra una vez más la poca idea que tienes de CI y da una idea de lo que has estado haciendo en 10 años.
Lo de los parámetros POST ESTÁ EN LA DOCUMENTACIÓN. OTRA COSA ES QUE NO TE LA HAYAS LEÍDO EN 10 AÑOS. Y LO QUE DICES EN EL ARTÍCULO ES FALSO, FALSO por mucho que intentes argumentarlo con que no te has leído la documentación.
¿Por qué asumes que yo no sé que puedes integrar Eloquent a CI? Hasta tenemos un post de hace años que explica cómo usar Eloquent sin Laravel: https://styde.net/implementar-eloquent-orm-en-tu-proyecto-sin-laravel/
¿Pero por qué alguien que necesita desarrollar un proyecto de forma rápida y efectiva querría enfocarse en intentar agregar un ORM de otro framework a Laravel? ¿Por qué no usar Laravel de una vez? Lo mismo sucede con intentar usar Doctrine en Laravel, en tal caso preferiría comenzar con Symfony a tratar de crear mi propio framework híbrido.
O podrías comenzar a crear tu framework desde 0.
Yo no voy a seguir con esta discusión, Gorka, si quieres demostrar las ventajas de CodeIgniter o corregir sus problemas, te invito a que escribas tutoriales o hagas pull requests al framework y a su documentación, y así toda la comunidad sale ganando, o te concentres en algo más.
Fin de la discusión.
Yo no pretendo demostrar las ventajas, solo intento hacer justicia ya que no la has hecho tú.
Que comentario más pendejo y arrogante, antes dice el fulano (que ni su nombre real puso), » No necesito ningún curso de Laravel, y mucho menos de iniciación.», cómo si todos los frameworks fueran igual a CI que puedes empezar de una vez con lo avanzado, quieto, sabelotodo.
A mí me ha parecido más pendejo el tuyo porque la razón por la cual digo que no necesito ningún curso de Laravel, es porque ya conozco y llevo años trabajando con él. Sabelotodo ;-)
Mijo usted puede llevar toda la vida usando el framework pero siempre hay algo que aprender, no hay necesitad de que omente acá como si fuera Taylor Otwell, calma que Duilio lo que quiere es fomentar las buenas prácticas no demostrar que sabe más que el resto y también llevo años con PHP no con Laravel y me han parecido que es muy profesional en lo que hace y sabe del tema, además de una década programando.
A ti te parece muy profesional porque sabes menos que él. Esto es normal, si yo miro al peor de los físicos hablar de agujeros negros también me parecerá que es un profesional. Aquí el mayor problema es que se ha lanzado a comparar dos cosas cuando solo sabe de una. Es decir, nunca tenía que haber escrito este artículo tan falto de rigor.
Me refiero que es profesional al profundizar y explicar, y sí sabe más que yo en el framework pero tengo bases solidad en programacioón en php ya llevo 6 años trabajandolo sin frameworks, el cuento acá es que no se necesita ser un genio para darse cuenta que un framework que use muchos «echos» es porque tiene una estructura que no está muy bien pensada, me imagino que los que brincaron por lo que Duilio dijo sobre CI es porque sólo han trabajado eso y es con lo que comen pero no veo porque encerrarse en una sola cosa.
Esa imagen lo describe claro, no es de si laravel o CI, es de ir por lo que mejor le funcione a cada quien, si veo que CI me diera lo que laravel ofrece sería otra mi opinión.
https://uploads.disquscdn.com/images/9304c11cf9293ca52562d4fd39fe7c966f1d628f7a0cfb6bf9f7cc80ce9d0af4.jpg
Leyendo los comentarios me parece que yo todo lo hice al reves. Necesitaba tener un proyecto rapidamente, entonces por sentido comun me pareció que un framework me haría mas facil la tarea y así fue. Laravel fue como amor a primera vista, aprendí OOP y TDD por medio de Laravel y ya no puedo ver el desarrollo web de otra manera, siento que usar php sin un framework en estos días, es como que le digas a un programador de Ruby que cree su propio framework web existiendo ROR. Ahora como leí por ahí, no usar Laravel porque los servidores compartidos solo tienen versiones viejas y no tienen Mcrypt??? WTF!!!, para eso estan los VPS!!!, es como ir al trabajo a caballo
Me hizo reír tu comentario, José Manuel :) Que bueno que hayas comenzado al revés. Ojalá todos comenzáramos al revés. Si quieres continuar aprendiendo sobre TDD una buena opción es ver nuestro curso de creación de componentes:
https://styde.net/curso-crea-componentes-para-php-y-laravel/
Saludos.
«¿Usabas CodeIgniter y te cambiaste a Laravel? Por favor cuéntale a la comunidad en los comentarios cómo te fue.» para que te ardas y te pongas a menospreciar a la gente que usa CI como se puede ver en comentarios más abajo? no gracias.
Yo no menosprecio a ningún desarrollador, los invito a utilizar una tecnología que los va a ser más productivos.
Si bien es cierto que CI tiene muchas carencias y malas practicas, hay que considerar que de todos los frameworks es el mas flexible y un poco mas facil de usar aun mas que Laravel por mucho que los fanboys digan lo contrario.
Por otro lado hay que aclarar si se quiere ser realmente honesto y etico, no hay que decir que por usar laravel estas mas seguro que con CI, andar por el mundo diciendo esto es la peor practica, la seguridad de los sistemas esta en la calidad del desarrollador no del framework.
CI no ha muerto ni morira, la cantidad de desarrollos que hay en el es mucho mayor que en laravel, veremos versiones que resuelvan los problemas que mas le aquejan de eso hay que estar seguro, continuara y por un largo tiempo.
Decantarse por uno o por otro es mas una cuestion personal, que tan dispuesto estes a cambiar o tambien que tan novato eres en PHP, si eres muy nuevo Laravel es tu eleccion, pues es correcto que te ayudara a paliar tus carencias como novato, pero si eres experimentado, CI lo dominaras, el tema de seguridad no sera problema, incluiras librerias y ORM’s etc. etc.
Ok
Cuando yo instalo un framework, quiero comenzar a escribir la lógica de mi aplicación tan pronto como sea posible. No me parece productivo tener que instalar un framework y luego pasar 2 semanas haciéndole ajustes o instalando y configurando componentes de terceros para que funcione medianamente bien, cuando termines quizás el cliente ya te canceló el proyecto por no ver avances en el mismo.
Lo dicho si tardas en poner a punto CI dos semanas y peor aún para ponerlo medianamente bien.
La instalación de Lavarel es muy pesada para proyectos pequeños (dejando de lado el fanatismo hacia Lavarel), CI es un framework acertado para proyectos pequeños y medianos, y Lavarel es bueno si de antemano vas dispuesto a elaborar un gran proyecto con muchas funciones y un equipo de programadores que te ayudaran a mantener el código.
Si el proyecto web va a tener que soportar una gran cantidad de manejo de usuarios y contenido, incluso en real-time, aqui no hay que mudarse de CI a Lavarel, HAY QUE MUDARSE DE LENGUAJE DE PROGRAMACION, PHP se queda corto, es lento, para aficionados de la programación, cualquiera hace un framework en php, cualquiera que no sepa ni la mas mínima idea de buenas practicas de programación puede hacer su pagina web en php, en otro lenguaje le lanzaría errores por todos lados. PHP es el reggaeton de los lenguajes de programación.
Estoy de acuerdo contigo excepto en el innecesario menosprecio. En laravel incluso también le dieron la maquillada para que se pareciera a los frameworks de grandes ligas como en Java y .net y para parecer de grandes ligas pues ya puestos mejor usar los grandes.
OK, bien pueda hay más sitios sobre otros lenguajes.
https://blog.famzah.net/2016/02/09/cpp-vs-python-vs-perl-vs-php-performance-benchmark-2016/
pesado ?, si son solo unos par de megas (ademas que un proyecto siempre puede crecer)
si se puede soportar una gran cantidad de usuarios y contenido, php 7 es mas rapido que python y ruby (creo que solo es superado por nodejs y go). el real time cada dia esta mas cerca con ratchet php, por otra parte supongo que haz visto codigo actual de php ?
solo un par de megas? laravel (37.4mb) vs codeigniter (3mb) casi no se ve la diferencia cierto? En fin, apenas comienzo con laravel, es dificil el cambio, vere si su tamaño en disco lo vale
Tu crees que hoy en dia 37 mb sean pesados para ub servidor considerando q no todos los archivos spn cargados al mismo tiempo .eso no marcara diferencias
Pero bueno cada uno elige lo que quiere
Entre los archivos que están en la carpeta vendor hay archivos README, licencias, archivos de composer, clases para generar código o ejecutar pruebas unitarias, etc. etc. El peso de los directorios no tiene mucho que ver con la velocidad en que se procese cada petición o la cantidad de archivos que a la final se cargan. Aquí es importante enfocarnos en la velocidad y calidad del desarrollo y Laravel es mejor, por algo es el framework más popular de PHP y cada vez gana más popularidad frente a Codeigniter y otras opciones: https://www.google.com/trends/explore?q=Laravel,Codeigniter,Symfony
Yo recomiendo altamente usar Laravel, pero como además dice @disqus_lSpzKXynrX:disqus, a la final que cada quien seleccione la herramienta que le parezca mejor.
Y si no usas PHP tenes que usar ASP que eso conlleva la desventaja de ser dependientes de Microsoft si o si hasta para programar.
Saludos. Solo mencionaré que las expeiencias o vivencias son las que hacen que se tenga inclinación por uno u otro FW. Es muy osado hacer afirmaciones valoradas en puntos de vista personales. Mi sugerencia en adelante Duilio es ser lo mas inodoro al realizar juicios de valor, prinero teniendo la empatia del lado derecho. Y para terminar hay una fraserescatable en estos casos y es «No es la flecha, es el indio». Saludos.
Si lees el post verás que yo estoy dando «facts»: gráficas y números de popularidad y desarrollo de ambos frameworks, comparativa en el uso de estándares, facilidad de actualización o instalación de componentes de terceros y muchos otros «facts». Si el indio es inteligente va a buscar el mejor arco y la flecha más puntiaguda.
Duilio, tu como profesor conoces la intersubjetividad, y esos numero que presentas no tienen suficientes datos para que sea una investigación de peso, y si así lo fuese, quedaría a subjetiva su interprestación. la inteligencia no va referida a lo que mencionas. Mi comentario no es despectivo, solo y te reitero mi sugerencia, debes ser mas inodoro, pues como profesor como sostienetu perfil, debes ser cuidadoso al realizar juicios de valor. Saludos!
Si la popularidad y la comunidad no son valores importantes para ti, no se qué pueda serlo :( Pero creo que la gente que visita Styde quiere saber mi opinión y la de otros expertos en el área. Quizás quieras saber que yo trabajo para una reconocida agencia digital en Londres que antes usaba CodeIgniter para sus desarrollos y ahora todos los proyectos nuevos se hacen con Laravel.
Wowww.. impresionante. Felicidades y mucho exito.. que buen post.
…o tal vez te importe saber que Laravel supera a Codeigniter con creces en número de paquetes disponibles, número de features, documentación oficial y cursos de terceros, cantidad de releases (hace poco salió Laravel 5.3 con muchos nuevos features y en 6 meses tendremos Laravel 5.4. ¿Cuándo saldrá CI 4? Hasta desarrolladores de CI ahora usan Laravel, proyectos creados en CI ahora se pasaron a Laravel como PyroCMS, y un largo etcétera que sólo gente que se niega a aprender algo nuevo quiere objetar.
Por cierto Duilio, me encanta tu trabajo, es brillante, llevo tiempo usando Laravel y comencé de la mano de los paisanos de CodeHero, luego me fuí con Styde, lo que dices sobre Codeigniter es bastante cierto, sin embargo investigando me conseguí que al creador de PHP, Rasmus Lerdorf le encata Codeigniter, de todos los fw le gusta es ese… Es extraño no?
Para ser honestos, Rasmus Lerdorf dijo que no le gustan los frameworks de uso general (y eso incluye a Symfony, Laravel, Codeigniter, Cake y similares) pero en mi opinión hoy en día (2016) PHP es tan rápido y poner un servidor potente en producción es tan barato que creo que la velocidad de desarrollo que te da un framework es mucho más importante que los milisegundos que puedas ganar tratando de ensamblar y crear todo por tu cuenta y usar Codeigniter no te da garantía que tu proyecto final vaya a ser más rápido que usando Laravel. Hay otras optimizaciones más importantes como por ejemplo usar caché, comprimir tus assets (js, css, etc.), optimizar consultas SQL, etc. Esas micro optimizaciones son más fáciles de ver cuando tienes tiempo extra y buen código probado y Laravel te provee de eso.
Pueden ver la opinión de Rasmus sobre los frameworks debajo; el video es de hace unos años, hay algo interesante que menciona sobre si requieres un Blog quizás usar WP sea la mejor opción, aunque no sea perfecto se adapta a la necesidad, esa es una respuesta a otra pregunta que me han hecho bastante.: https://youtu.be/anr7DQnMMs0?t=31m49s
Hola Duilio,
Un placer saludarte, obviamente haces un trabajo muy bueno con tu sitio y eres un ferviente seguidor y defensor de Laravel, lo cual también entiendo ya que es una gran herramienta.
Dicho esto, creo que te beneficia poco hacer comparativas y postularte en alguno de los dos lados, pero es mi humilde opinión.
Pienso que Codeigniter en su versión 4 ha mejorado un 500% y se está quitando mucha basura de encima, algo que le ha ocasionado muy mala reputación, y obviamente es algo normal ya que no hace uso de buenas prácticas.
Ahora bien, te invito a que revises este artículo de mi sitio donde verás que Codeigniter 4 ya no es Codeigniter 3 y se parece mucho a Laravel, es bueno seguir a los mejores, siempre lo he pensado y ellos también lo hacen.
https://www.uno-de-piera.com/bases-datos-codeigniter-4/
También te invito a que revises la documentación de Codeigniter 4, la puedes descargar desde su repositorio, verás que ha mejorado mucho y que están haciendo grandes cosas, tengamos un poco más de paciencia que al final son compañeros que al igual que en el equipo de Laravel lo único que hacen es intentar ofrecer más herramientas para que así no tengamos dependencia de una, creo que es lo más acertado.
Con esto no pretendo iniciar ninguna disputa, simplemente es mi opinión.
PD: El enlace a mi sitio lo puedes eliminar una vez lo hayas revisado, no quiero publicidad.
Un abrazo.
Israel Parra.
Gracias por comentar, Israel, yo aprecio tu trabajo.
Lo que escribiste en el post sobre Codeigniter 4 es sin duda mucho mejor que la versión actual 3.*. Aún así se parece mucho a lo que ya teníamos en Laravel 4.*, y hay que reconocer que ahora Laravel 5.* sobretodo esta nueva versión 5.3.* incluye muchísimos features nuevos como el sistema de notificaciones que llevan el desarrollo de PHP a un muy alto nivel.
En mi opinión es muy difícil que Codeigniter alcance a Laravel. Tú sabes que comparando ambos frameworks, el desarrollo / evolución y avance de CI ha sido mucho más lento que el de Laravel, y esta versión 4 puede que corrija los puntos sobre uso de estándares y del ORM que menciono en el post, pero en comunidad, desarrollo activo, nuevos features y popularidad Laravel sigue creciendo mucho más rápido.
Tienes razón Duilio, estoy de acuerdo contigo, Codeigniter 4 se acerca a Laravel 4 y seguramente añadirá cosas muy interesantes, pero será muy muy complejo que se ponga a la altura de Laravel 5.x.
Un saludo y sigue con tu gran trabajo.
Recuerdo cuando Microsoft llegaba a la empresa ofreciendo capacitaciones y resaltando las capacidades de Silverlight!
Hay que tener cuidado con las modas!
Personalmente en algunos casos prefiero usar Codeigniter en otros Laravel.
Como se ha movido este post, jejeje… Qué tal una comparación entre Laravel y Symfony??
Yo no he trabajado en proyectos de Symfony 2. Mientras que con Codeigniter hice y vi muchos proyectos. Tendría que probar más Symfony antes de escribir el artículo.
Saludos.
Totalmente de acuerdo Duilio Palacios, yo usaba CI cuando vi EllisLab le dejo de dar soporte, y le empezó a dar soporte una facultad si mal no recuerdo, investigue laravel y me cambie inmediatamente. Laravel en ese momento era muy superior a CI en este momento desconozco, pero tampoco lo volvere a investigar, por ahora me quedare en laravel. De paso quiero agradecer el gran esfuerzo que le pones a la comunidad en español de laravel, ya que gracias a vos existen cursos excelentes de laravel y están muy actulizados, sos un referente en el mundo php/laravel, espero que sigas asi, tan comprometido y todos nosotros podemos disfrutar y aprender de lo que haces :D
A la orden @guduchango:disqus! Espero con el apoyo de la comunidad que pueda seguir enseñando PHP y Laravel por muchísimos años más! Muchos saludos.
Tengo en verdad muy poca experiencia desarrollando, pero me ha tocado desafortunada mente ver muy mal uso de frameworks, Simfony por ejemplo, me dio bastantes dolores de cabeza (obvio no me toco elegir el framework, solo era un colaborador) instalar demasiados bundles, no sé si sea por hardware o que haya sido pero daba muy mal performance y UX, laravel solo he hecho CRUD’s muy básicos me ha dado un excelente performance, pero estas sujeto a las dependencias de tu proyecto y si tu servicio de hosting es limitado! o rayos! (lo vivi, y fue muy dificil pasar a prod a laravel, ya saben típico cliente que no quiere invertir) en verdad sufrirás de muchos dolores de cabeza, no me gusta defender ningún framework, porque me he metido y he revisado algunos otros, cada uno tiene sus pros y sus contras, lo que si quisiera pedir a los colegas programadores, definan bien el tama{o de su proyecto, creo que un proyecto con 6 tablas en la bd y usar laravel o symfony para ello es de verdad muy exagerado, en lo personal me gusta lo simple, eficiente y funcional, sobre todo, que al usuario en verdad le guste usar su web app, su site. Hagamos de internet un mejor lugar
Si me tocara crear un proyecto con 4 páginas y un formulario de contacto usaría Laravel, porque ya me ofrece una forma fácil de:
– Estructuras las rutas
– Crear las plantillas (con layouts, helpers, partials)
– Validar los datos del formulario
– Enviar los datos por email
– Guardar un respaldo en la base de datos.
Cada proyecto aunque sencillo requiere de muchos detalles que un framework como Laravel cumple fácilmente.
Respeto tu opinión y en teoría es lo que debe ser, pero sabemos que en la práctica muchas veces es difícil implementar algo realmente funcional, he conocido clientes que solo quieren html, ni siquiera usar PHP para su web, y es que, es ahí donde creo está el verdadero problema. ¿necesitas una bd cuando solo quieres informar de algún producto?, ¿Necesito laravel para tal cosa?… a veces la mejor solución es PHP puro, sin framework, y también me ha pasado el cliente usa PHP 4 no quiere migrar porque le ha funcionado así… ¿crees poder usar tecnología actual?, uno como profesional de TI puede decir, que eso está mal, pero es realmente quien paga quien decide como se hacen las cosas.
No es solamente quien paga, es de acuerdo mutuo, tú puedes decirle que NO o incluso despedir a un cliente que te está haciendo perder tiempo o que te pide que hagas un proyecto que tú sabes que es inseguro, porque 1. Es cuestión de ética. 2. Si aceptas a sabiendas de que estás trabajando con una versión obsoleta de PHP y luego el sitio es hackeado, el cliente te va a ver a ti como el responsable; mas si hablamos de un cliente intransigente como el que describes.
Comenzar a elegir clientes fue una de las mejores decisiones de mi carrera, me permitió trabajar menos y obtener más ingresos, entiendo que suena difícil pero todos podemos llegar a ese punto. Yo sólo aceptaría un proyecto así si absolutamente no tengo otra opción.
Solo espero que quien usa un framework y ocurre algo, realmente el programador sepa en donde esta el error! porque he visto a personas usar laravel y no saben en verdad como es que funciona. A mi me tocó desarrollar mi propio framework desde 0 solo para entender como es que funciona… me sirvió mucho como práctica y realmente entender muchas cosas. Uso laravel, como codeigniter, como me gustaria saber Yii o Cake. Cerrarse a una sola cosa te limita muchas veces.
Sabemos bien que un framework no garantiza al 100% la seguridad de un sistema.
Es así, pero usar Laravel o un buen framework ayuda muchísimo puesto que ya traen protección por defecto. Para aprender Laravel al menos existe Styde y muchos otros recursos en inglés.
Saludos, Luis.
Hola, nuevo en Laravel y usando CI desde hace 6 años, compre la anualidad de Styde porque veo que es buena pagina para aprender Laravel, lo poco que llevo me ha gustado mas que CI, aunque aun me quedan dudas en la parte de migrar el proyecto en desarrollo al de producción (es decir, moverlo de un servidor a otro). Saludos.
Hola @shaditokun:disqus. Gracias por tus comentarios y me alegra que te esté gustando más Laravel. Puedes hacer tus preguntas en nuestro Slack. Encontrarás un botón para unirte debajo de los últimos posts o en la página de bienvenida. También puedes ver nuestro curso de servidores aunque cada caso es distinto.
Hola Dulio, excelente sus tutoriales de verdad los he seguido, todo. Llevaba bastante tiempo con Codeigniter los trabajos estaban muy bien realizados, si hay muchas desventajas, el codigo es mas largo, bueno tampoco es muy limpio por usar echos, etc ojo no digo que sea malo porque de ahi realize la mayoria de mis trabajos de verdad son completos y los clientes estan a gusto. Pero ahora estoy implementado con Laravel la verdad estoy muy sorprendido la calidad y lo que me hubiera ahorrado de trabajo, Laravel cumple todas la expectativas. La verdad ya me cambie hace ratos, entiendo su punto que nos aconseja a la hora de realizar trabajos profesionales con Laravel. Saludos desde Costa Rica siga dandonos mas tutoriales
Yo una vez probe Laravel y me pareció un quilombo, quizás porque no encontré una buena documentación. De hecho creo que cuando lo instalé me
tiraba error, no como otros frameworks. Pero bueno nunca me acostumbre a un framework, asi que tendre que probar de vuelta. No se si como novato en el mundo de los frameworks me convenga empezar con este o con Symfony. A mi lo que me incomoda de Symfony por ejemplo es que no solo hay que aprender el framework sino que te obliga a usar plantillas twig en vez de php. Prefiero primero estudiar un framework que use plantillas php para despues pasar a Symfony.
Tienen pensado hacer un curso sobre Doctrine?
Buenos días Duilio por favor un servicio de hosting que pueda contar con laravel y postgres que me recomiendes?
Heroku es una buena opción
Excelente post Duilio. Saludos :)
el principal punto por el que no me aventuro en laravel es el saber si un desarrollo hecho en mi computadora, en laravel obvio, funcionara en un hosting compartido, de esos a los que uno no tiene acceso a linea de comandos, eso de instalar composer y laravel, en cambio, com odices ahi, codeigniter, copias pegas y listo, aparte, no he encontrado un buen tutorial o explicacion que te lleve de la mano en laravel, configuracion de bd, conexion a oracle (cosa que no he hecho con codeigniter y quiero hacer, por eso volteo a laravel) CRUD basicos, etc.
Hola, @juanmanuelherreracarrera:disqus. Puedes trabajar con Laravel en servidores compartidos, simplemente instala todo en local y súbelo por FTP y listo. Sin embargo, hoy en día hay formas más profesionales de trabajar y VPS que son realmente económicos (por ejemplo Digital Ocean). Voy a conversar con el equipo de Styde para ahondar un poco más en este tema. Pero definitivamente los servidores compartidos no son un motivo para no trabajar con Laravel.