CodeIgniter X Laravel - Prós e contras de cada framework

Aviso importante!

Eu sei que você não quer ver propagandas, porém o conteúdo gratuito só está aqui graças a publicidade. Considere desativar o AdBlock para esse site.

Com o curso de Laravel Básico rolando, acho pertinente abordar um assunto que causa certa polêmica na comunidade de desenvolvedores: uma comparação entre CodeIgniter vs Laravel.

Eu trabalhei com CodeIgniter por alguns anos, e com o tempo mudei para o Laravel por questão de curiosidade mesmo, pois o CodeIgniter supria todas as minhas necessidades. Eu acho o CodeIgniter um ótimo framework, e a maioria dos meus projetos continuam com ele como base, importante ressaltar isso. Apenas comecei a utilizar o Laravel em projetos novos, e em alguns casos, reescrevi projetos que estavam em CodeIgniter para utilizar o Laravel como framework.

Eu vou fazer um detalhamento da minha experiência como um desenvolvedor que já trabalhava com CodeIgniter e ai resolveu aprender Laravel, e após isso vou abordar os prós e contras de cada framework, e após isso, passar minha opinião de quem, e quando, se deve usar o CodeIgniter ou o Laravel.

Como eu já disse, eu comecei a aprender o Laravel por curiosidade. Eu li umas matérias interessantes sobre ele, e resolvi aprender. No começo confesso que, acostumado com a simplicidade do CodeIgniter, me senti um pouco intimidado com a quantidade de funcionalidades que o Laravel proporcionava, e a complexidade que essas funcionalidades traziam por consequência. Mas com uma semana de estudo já estava começando a ver recursos nele que facilitariam muito a minha vida como Desenvolvedor. E foi isso que me fez perceber algo que fez eu querer estudar muito mais o framework: Eu não sabia o que eu precisava.

Ou seja, eu só fui perceber a utilidade dos recursos que o Laravel proporcionava quando comecei a estudar, e percebi mais coisas ainda quando comecei a utilizar o framework na prática para desenvolver os meus projetos! E hoje em dia não consigo me ver trabalhando sem estas facilidades em mãos.

Tendo dito isso, vamos aos prós e contras dos frameworks.

Codeigniter

Prós

Contras

  • Simplicidade de instalação
  • Facilidade de utilização
  • Fácil implementação em hospedagens comuns
  • Não precisa da linha de comando
  • Compatibilidade com servidores
  • Desempenho ótimo
  • Documentação ótima
  • Fácil de encontrar soluções na internet
  • Desatualizado quanto as tendências do PHP, e dos desenvolvedores
  • Suporte com versões novas desanimador
  • Tudo o que há de novo no Laravel como diferencial acaba virando um “Contra” o CodeIgniter

O CodeIgniter é um framework simples e fácil de usar, não requer familiaridade com a linha de comando para sua utilização. Instalar um projeto feito com CodeIgniter em hospedagens comuns é muito simples e prático. A documentação é objetiva e clara e contém praticamente tudo o que você precisará para desenvolver seu projeto.

Em contrapartida ele ficou praticamente abandonado por alguns anos, a empresa responsável por ele mudou várias vezes, o que o deixou desatualizado em comparação ao Laravel e outros frameworks mais modernos.

Eu parei de atualizar o framework na versão 2, por conta disso não conheço a versão 3 que está disponível hoje em dia. Porém a nova versão, apesar de trazer muitas novidades, melhorias de compatibilidade e correções de problemas, se mantém em essencial o mesmo CodeIgniter de sempre. O que de certa forma é uma coisa boa para quem está trabalhando com o framework e quer atualizar os seus projetos. Porém acaba o mantendo carente em recursos se comparado aos concorrentes mais robustos.

É importante ressaltar que a intenção do CodeIgniter é ser simples e compatível com a maior quantidade de versões dos softwares, facilitando sua instalação na maioria de servidores possíveis. E não ser robusto e cheio de funcionalidades e novidades.

Traduzindo livremente a introdução da documentação do CodeIgniter 3:

“CodeIgniter é certo para você se:

  • Você quer um framework pequeno e simples.
  • Você precisa de performance excepcional.
  • Você precisa de vasta compatibilidade com contas de hospedagens padrão para rodar uma variedade de versões do PHP e configurações.
  • Você quer um framework que requer praticamente zero configuração.
  • Você quer um framework que não requer utilização da linha de comando.
  • Você quer um framework que não requer que você adera a regras de desenvolvimento restritivas.
  • Você não está interessado em bibliotecas monolíticas de grande escala como PEAR.
  • Você não quer ser forçado a aprender uma linguagem de template (apesar de um analisador de templates estar opcionalmente disponível se você desejar um).
  • Você evita complexidades, favorecendo soluções simples.
  • Você precisa de documentação clara e completa”

Fonte: Docs do CodeIgniter

Aqui no RBTech existem vários cursos sobre CodeIgniter, quem quiser dar uma aprofundada é só dar um pesquisada.

Laravel

Prós

Contras

  • Implementação nativa do Composer
  • Fácil escalabilidade do sistema
  • Ferramentas e recursos formam um workflow funcional e completo
  • Facilidade de manutenção do projeto
  • Linha de comando
  • Documentação ótima
  • Fácil de encontrar soluções na internet
  • Blade
  • Elixir
  • Homestead
  • Migrations
  • Artisan
  • Complexidade da estrutura de trabalho dificulta a instalação em geral
  • Rodar Laravel em hospedagens comuns não é produtivo
  • Quantidade de recursos reflete em uma quantidade de conteúdo maior para se aprender

O Laravel é um framework robusto que integra diversas ferramentas e módulos que já existem na comunidade por padrão em sua estrutura. Apesar de ser mais robusto, e oferecer um workflow que pode assustar no inicio: é extremamente fácil de se trabalhar com o Laravel, e tudo é feito da maneira mais simples possível. A lista de prós para o Laravel é até dificil de montar pois todos os módulos que ele incorpora podem ser contados como um pró, acima eu listei apenas alguns deles.

A implementação do Composer, facilita a manutenção dos pacotes instalados no seu projeto. A escalabilidade que eu menciono, se refere ao fato da organização do Laravel facilitar o desenvolvimento de projetos grandes. Os módulos são todos bem estruturados, você começa a desenvolver coisas que ajudam você a desenvolver e trabalhar no seu projeto, ao contrário de apenas desenvolver as regras de negócio.

A falta de uma linha de comando é citada como um pró na lista do CodeIgniter, e em verdade ela pode ser um pouco intimidadora inicialmente. Mas isso é apenas no inicio mesmo, quando você se acostuma com os comandos do Artisan e os incorpora no seu dia a dia, rapidamente se entende a utilidade deles e fica dificil pensar como se conseguia viver sem eles.

O Blade, para quem não conhece, é o compilador de templates do Laravel, que serve como uma espécie de tradutor de templates para o PHP.

O Elixir é uma API que facilita o desenvolvimento de scripts para compilar seus scripts e styles em um arquivo só, versionar eles. Já aconteceu com você de lançar um script novo com novas funcionalidades, mas o navegador não carregar o novo script pois o antigo está em cache? Pois então, o versionamento serve exatamente para resolver esse problema, o elixir cria um nome de arquivo compilado unico para as versões dos seus scripts/styles e o navegador atualiza automaticamente pois o nome é diferente entre as versões.

O Homestead é um facilitador do Vagrant que traz consigo uma maquina virtual com linux instalado e configurado. Tudo pronto para que você possa usar seu projeto Laravel rodando com apenas um comando. Para quem não sabe, Vagrant é um facilitador para se criar ambientes de desenvolvimento dentro de máquinas virtuais. Eu trabalhei muito tempo utilizando o linux, e nunca senti a necessidade de utilizar o Homestead, hoje estou usando uma instalação do Windows 10 para trabalhar, e utilizando ferramentas como WAMP estava experenciando diversos bugs nos meus projetos que estavam tirando a produtividade do desenvolvimento. Implementei o Homestead, e pronto. Estou novamente com a estabilidade e facilidades do Linux em mãos.

As Migrations são o controle de versão do seu banco de dados, muita gente (eu incluso) acaba implementando algo parecido as Migrations nos projetos com código escrito todo na mão. A vantagem das migrations do Laravel é que elas vem amparadas pelo Artisan, que facilita o processo na hora de atualizar o servidor.

Apesar de todos os pontos positivos, todos esses pacotes acabam trazendo uma complexidade intimidadora aos projetos. Além disso, rodar o Laravel em serviços de hospedagem comuns acaba se tornando inviável, pois você não terá acesso a muitas das ferramentas que ele disponibiliza para facilitar o desenvolvimento.

Aqui no RBTech estamos lançando cursos para Laravel, com o curso de Laravel Básico em andamento atualmente, onde eu abordo os principais temas sobre o Laravel.

Conclusão

Comparando os dois frameworks diretamente dá pra ver que cada um tem o seu foco, e que são objetivos diferentes. O CodeIgniter é um framework mais leve, de fácil instalação e de fácil implementação em hospedagens simples por conta de sua vasta compatibilidade.

Já o Laravel é um framework mais robusto composto por diversos pacotes de terceiros, e a intenção dele é fornecer tudo o que um desenvolvedor precisa para criar seus projetos. Tudo isso vem com um custo que é uma complexidade maior, e um desempenho pior se comparado com o CodeIgniter.

Se você já trabalha com CodeIgniter, recomendo aprender o Laravel para tirar suas próprias conclusões. É mais fácil do que parece.

Se você está iniciando no mundo PHP e não sabe se aprende CodeIgniter ou Laravel, o CodeIgniter é mais rápido para se entender como funciona o PHP. O Laravel é mais completo e requer mais aprendizado. Porém o Laravel não obriga o desenvolvedor a utilizar suas diversas funcionalidades, então é possível ir aprendendo as funcionalidades dele aos poucos, conforme for aprendendo.

Uma sugestão para rodar o Laravel em um servidor: a melhor opção é contratar um servidor onde você tenha acesso direto a ele. Quem tiver interesse em se aprofundar nisso, pesquisar sobre: SaaS, IaaS e PaaS.

De uma forma simplificada, esses servidores te permitem o acesso direto a ele (via linha de comando normalmente), dando a você a flexibilidade de montar o servidor do jeito que você quer trabalhar.

Exemplos deste tipo de serviço:

  • AWS da Amazon (ec2)
  • Digital Ocean
  • Jelastic da Locaweb

Bônus:

Para visualizar uma comparação entre a performance de vários frameworks em PHP, incluindo CodeIgniter e o Laravel, clique aqui.

Sobre o autor

Victor Hugo Cunha

Sou desenvolvedor há 8 anos, gosto muito de programação e lógica no geral. Trabalho atualmente com: PHP com Codeigniter, Laravel; JavaScript com AngularJS; Desenvolvimento mobile para Android com Java

Comentários

Atualmente temos 6 comentários para este post. Participe você também, clique aqui e comente sobre o assunto.

  • Primeiro Victor, parabéns pelo artigo.
    A minha situação é um pouquinho diferente, eu sempre programei em PHP e usava ZF1, logo que saiu o ZF2 não me interesse mudou muita coisa, acabei entrando no mundo do Ruby e do Rails, desde de então programo mais em Ruby on Rails, mas tenho clientes que preferem PHP para projetos, mas sinceramente não gostei da forma como o ZF continuou, estou agora lendo sobre CodeIgniter e Laravel, o CI achei bem simples e já li algumas coisas de Laravel.
    Com a sua experiência acha que nesse meu caso seria melhor Laravel?

    Responder
    • Victor Hugo Cunha comentou em

      A escolha entre Laravel ou Codeigniter seria mais pelo seu objetivo, e pelos projetos que você vai fazer, do que pela linguagem que você está vindo. Ambos são similares, e você pode alternar entre ambos facilmente. Atualmente prefiro o Laravel em todos meus projetos, mas ainda trabalho com Codeigniter em projetos mais simples e/ou precisam rodar em servidor compartilhado

      Responder
  • Antonio Carlos comentou em

    Iniciei com o Laravel, fiz um sistema de estoque com ele, gostei muito, ele prático, robusto e bem funcional.
    Mas pelo fato de não rodar em servidor compartilhado (com todas as suas funcionalidades), o chato disso é que ele fica em uma situação de utilização complicada (no meu caso), pois com tudo isso pra rodar, dou preferência ao Spring (Framework do Java).

    Já o Codigniter me apaixonei assim que examinei o código fonte de um sistema que comprei. Fiquei curioso pra entender como funciona, pois o codigo é muito limpo.
    Fiz o curso da RBtech, (excelente por sinal), e vi que realmente pra construir um portal, ou qualquer sistema em servidor compartilhado é o que há.

    Minha dica é:

    Se for usar um sistema em servidor compartilhado, vai de Codigniter.

    Se for trabalhar com SaaS vá de Laravel. Isso se seu cliente não for uma instituição financeira, pois com eles você só pode trabalhar com backend em Java. Neste caso utiliza-se Spring Framework no backend e HTML+CSS no front end e Angular (js ou 2) no Middlend.

    Responder
    • Victor Hugo Cunha comentou em

      Boa exemplificação, Antonio! Nunca trabalhei com Java como backend no servidor, como você mencionou, porém compartilho da mesma opinião que você quanto a questão de quando utilizar o CodeIgniter.

      Responder
  • Pitter comentou em

    Parabéns, obrigado pela iniciativa... estou fazendo um sistema grande em ci... esta 70% concluído... to na duvida se começo do 0 em laravel para aprender... já que o ambiente vai ser um amazon... mas não tenho muito tempo para a curva de aprendizagem.

    Responder
    • Victor Hugo Cunha comentou em

      Laravel e CI são muito parecidos em muitos quesitos, já migrei alguns sistemas de CI para Laravel e foi fácil. A minha sugestão é: Termine o sistema em CI mesmo.

      Fazer uma migração de código (após entender como o Laravel funciona) do Codeigniter pro Laravel é uma tarefa relativamente fácil - obviamente depende da estruturação do código em si, se for um código bem programado é fácil. Porém, se, como você disse, o sistema já está 70% concluído, termine ele primeiro. Entre fazer a migração agora (nos 70%) e depois (nos 100%), a diferença de tempo é mínima. Vale a pena ter o projeto pronto, e depois lançar uma versão no Laravel do que estacionar seu projeto agora para fazer isso.

      Responder

Deixe seu comentário