PagSeguro
Canais iMasters

Framework + PHP + Zend Framework + CodeIgniter

Comparativo: Code Igniter versus Zend Framework

Quando comecei a escrever no meu Blog e aqui no iMasters, eu escrevi um pouco sobre CodeIgniter, um framework de desenvolvimento MVC para PHP. Por muito tempo eu usei o CodeIgniter como meu principal framework de desenvolvimento, até que um dia ele começou a não atender mais às minhas necessidades em um framework. No começo eu preferi realizar algumas alterações no próprio núcleo do framework para que alguns pontos específicos fossem atendidos, mas percebi que isso era um pouco improdutivo - eu passava mais tempo adequando o framework às minhas necessidades do que realmente criando o código necessário para a aplicação.

Resolvi, então, que era hora de pesquisar novos frameworks de desenvolvimento, e um dos pesquisados foi o Zend Framework, que eu já conhecia, mas tinha trabalhado profundamente com ele. Essa acabou sendo a minha escolha de framework para alguns projetos e, com o tempo, fui percebendo as vantagens e as desvantagens que um deles levava em relação ao outro. Veremos, aqui, um pouco sobre o que aprendi trabalhando com esses dois frameworks de desenvolvimento.

CodeIgniter

CodeIgniter é um framework de desenvolvimento MVC em PHP mantido pela EllisLab. Até o momento em que escrevo este artigo encontra-se em sua versão 2.0. Já falei um pouco das vantagens e das desvantagens desse framework nos artigos PHP com CodeIgniter e Começando com CodeIgniter.

Vantagens

  • Foi desenvolvido para dar suporte tanto a servidores PHP 4.x quanto a servidores PHP 5.x. Mas, se você trabalha com um servidor em PHP 4.x, minha primeira sugestão é para que você migre seu servidor para 5.x, já que o suporte ao PHP 4.x foi descontinuado em 31/12/2007. Se você não tiver como fazer isso, entre o Codeigniter e o Zend, você só terá a opção do primeiro.
  • Documentação ampla e bem organizada, disponível em diversas línguas, com tutoriais em vídeo, além de uma wiki e fórum dos usuários.
  • Baixa curva de aprendizado. Para quem já conhece PHP, mas nunca utilizou nenhum framework de desenvolvimento ou outros conceitos de MVC, aprender a desenvolver em CodeIgniter é uma tarefa bem simples, em parte pela documentação existente, e em parte pela facilidade de uso do framework mesmo.

Desvantagens

  • Baixa taxa de atualização. A versão atual, 2.0, foi lançada em 28 de janeiro de 2011, mas a última versão anterior a essa tinha sido lançada em 11 de setembro de 2009, mais de um ano de intervalo entre as versões, o que faz com que o framework não acompanhe as tendências de tecnologia e de mercado.
  • É um framework que realiza muito bem as funções básicas, mas qualquer coisa além disso seria pedir demais do dele. Ele possui suporte apenas para conexões aos principais bancos de dados do mercado, portanto se você utiliza algum banco de dados que não é tão usado, ou se aderiu aos NOSQL, saiba que ele não oferece suporte. Além disso, não possui suporte às novas tendências em web social, não tendo bibliotecas nativas para conexões com facebook, twitter etc, tudo isso devido à baixa taxa de atualização do framework.

Conclusão

Na minha opinião, esse é o framework ideal para o desenvolvedor que ainda trabalha com PHP puro e quer aprender um pouco mais sobre arquitetura MVC e utilização de frameworks de desenvolvimento. Mas é preciso ter plena consciência de que um dia o CodeIgniter deixará de atender suas expectativas e você terá que procurar um framework com mais funcionalidades e, consequentemente, mais complexo.

Zend Framework

Zend Framework é o framework de desenvolvimento MVC mantido pela própria Zend, que também é a mantenedora oficial da linguagem PHP. O Framework atualmente se encontra em sua versão 1.11.

Vantagens

  • Maior número de atualizações, em comparação com CodeIgniter. A versão atual, 1.11, acaba de ser lançada e, desde sua primeira versão estável, em 2007, uma versão nunca ficou mais de um mês sem receber atualizações.
  • O Zend possui todas as funções básicas que se espera de um framework MVC, como suporte a conexões com inúmeros bancos de dados, uma excelente arquitetura MVC, e ainda realiza outras funções mais complexas como suporte a redes sociais, autenticação, paginação, edição e criação de arquivos, upload de arquivos e muitos outros.
  • É um framework totalmente desenvolvido de forma orientada a objetos.

Desvantagens

  • Uma das desvantagens seria o suporte a apenas a versão 5.x do PHP, mas, sinceramente, não considero isso uma desvantagem, já que como dito anteriormente a versão 4.x já foi descontinuada há muito tempo, não acho que ainda se deva dar muita atenção a ela, acredito, sim, que precisa haver uma migração total dos servidores que ainda trabalham com PHP 4 para PHP 5.
  • A documentação do Zend Framework, na minha opinião, é tão completa quanto complexa. Quando comecei a trabalhar com ele, essa foi uma das maiores dificuldades que senti, muitas vezes era mais fácil encontrar as respostas em outros sites do que na própria documentação da linguagem, documentação esta que até possui um área destinada a traduções, mas que na prática não funciona nem um pouco, por isso a documentação só está disponível em inglês.
  • Alta curva de aprendizado, em parte pela deficiência na documentação, e em parte pela maior complexidade do framework mesmo e o maior número de funcionalidades presentes.

Conclusão

Não é um framework para aqueles que saíram agora do PHP puro; migrar diretamente daí para o uso do Zend Framework seria uma tarefa extremamente complexa de se realizar, por isso não recomendo. Mas, quem optar por iniciar com o CodeIgniter sentirá, mais cedo ou mais tarde, a necessidade de migrar para um framework mais completo.

Conclusão Final

Ao meu ver, a ordem natural de aprendizado em desenvolvimento web é iniciar sua caminhada com as linguagens de marcação e estilo para então migrar para uma llinguagem server side. Caso o PHP seja a linguagem escolhida, você deverá trabalhar um pouco com a linguagem de forma pura. Isso não é aconselhável de fazer em projetos reais, mas essa prática te dará muita bagagem para que você chegue ao próximo passo.

Em seguida, utilize um framework mais simples, como o CodeIgniter, que é aconselhado para o desenvolvimento de pequenos projetos no início da sua carreira de desenvolvedor. Em seguida, migre para um framework de desenvolvimento mais completo e, consequentemente, mais complexo, como o Zend Framework.

Com todas as premissas apresentadas acima, não posso deixar de dizer que o principal ponto no qual o CodeIgniter deve melhorar é em ter uma maior frequência de atualizações, o que faria com que ele recuperasse o tempo perdido e se adequasse à nova realidade do mercado de tecnologia.

Já do lado do Zend Framework, melhorias na documentação seriam muitíssimo bem-vindas e ajudariam muito os desenvolvedores que já utilizam o framework, além de que ampliaria a migração de outros desenvolvedores para ele. Dentre as melhorias na documentação, eu poderia citar a tradução dela para outros idiomas e a conclusão das traduções para os idioma atualmente suportados somente na teoria, um maior detalhamento dos argumentos das funções presentes no framework, já que as funções até são bem documentadas, porém seu argumentos não, e a criação de exemplos práticos de utilização dessas funções, já que esses inexistem.

Aguardo os comentários de vocês sobre este assunto!


Comente também

52 Comentários

Osni Flavio Passos
Osni Flavio Passos

De uma chance ao KohanaPHP que é baseado no CI :)

Claudio
Claudio

Seria legal comparar também o symfony e o cakePhp... !

Renato Paiva
Renato Paiva

Concordo!

Paulo R. B. Rocha
Paulo R. B. Rocha

Um artigo falando sobre os frameworks brasileiros também seria interessante: spaghetti*, NEOSPHP, outros...

rod
rod

"spaghetti" é só uma cópia mal feita do cakephp e não está mais sendo desenvolvido

E não tem comparação boa a se fazer, cada um serve para uma questão diferente
vai do projeto

Marcelo Rodrigo Wiebbelling
Marcelo Rodrigo Wiebbelling

Como qualquer outra comparação (incluindo as minhas heheh), essa é levemente tendeciosa :)

Rafaelget
Rafaelget

O Kohana, como o Osni citou ali em cima, foi originalmente baseado no CI, mas hoje está muito mais evoluído.

A hora que tiver um tempo de uma olhada nele.

Felipe
Felipe

Eu acredito que, em qualquer projeto é preciso avaliar suas necessidades para identificar o "calibre" do framework a se utilizar. Acho que Zend não é "pau para toda obra" e o mesmo digo de "CI". Existem problemas e um martelo para cada um deles.

José Augusto Chaves
José Augusto Chaves

Acho que analisar o CI puramente é bom,mas deveria ter sido analisado outros framorks que estão muito mais avançados baseados no CI (pyro por exemplo) ou não, como o YII, que é um dos mais utilizados no mundo. Batendo o CI (segundo na lista), CakePHP (terceiro) e o Zend (Quarto).
Acho que comparação de um para um meio inconclusiva, ainda mais quando se tem subitens como o CI tem.

Taffarel de Lima Oliveira
Taffarel de Lima Oliveira

José, vc tem uma fonte mostrando quais são os frameworks mais utilizado no mundo? ou vc tirou essa ordem da sua cabeça?

Leonel Folmer
Leonel Folmer

http://www.phpframeworks.com/top-10-php-frameworks/

Edson Henrique
Edson Henrique

Isto não é uma estatística, é apenas o resultado de alguma enquete que alguém fez... Se eu quiser que o Zend ganhe a disputa é só eu votar 100 vezes nele...

Thiago Machado
Thiago Machado

Aqui na empresa usamos o http://oraculumframework.org/ para praticamente todos os nossos projetos. até agora nao tive reclamações.

Gilberto Albino
Gilberto Albino

Oraculum está abaixo do CodeIgniter.

Genesio
Genesio

em que sentido???
dei uma olhada no projeto e achei interessante por ser uma iniciativa nacional
na minha opinião a galera está de parabéns pela atitude pelo menos

Mateus Reinaldo
Mateus Reinaldo

Otimo artigo. Muito esclarecedor. Concordo que a curva do Zend é alta. Sua documentação é nojentamente complicada pra um iniciante

Pablo Lopes
Pablo Lopes

Já trabalhei com Zend por mais de um ano, já vivi um pouco do CodeIgniter e atualmente estou utilizando Symfony.
Sinceramente, nada é melhor que o Zend. Mas como foi dito, é muito complexo e o aprendizado para quem está começando agora pode ser difícil.
Os outros, todos tem suas utilidades como foi dito.
Agora o Symfony, que é com o qual trabalho atualmente é um lixo total. Não recomendo nem para meu pior inimigo.

Cristian Cardoso
Cristian Cardoso

Belo artigo, acredito que este seja o caminho mais adequado e fácil para quem quer iniciar com um framework.

Acabei saindo do PHP puro e indo direto para Zend, confesso que a curva de aprendizagem não foi pequena, mas isso também é devido ao fato de ir estudar por conta, sem ter a necessidade de construir um projeto seguindo com suas etapas.

Mas hoje em dia dificilmente faço algo sem o Zend, pois o mesmo facilita e muito na hora de criar os projetos e dar manutenção aos mesmos, e a quantidade de componentes que ele possui é fantástico, dependendo do projeto é so ir utilizando os componentes prontos e preocupando-se apenas com a regra de negócio.

Forte Abraço.
Cristian Cardoso
http://ctncardoso.com.br

jones  Guidini
jones Guidini

Legal o artigo mas seria legal tbm ter um comparativo entre o CakePHP e o ZEND. Sei que o ZEND e mais completo mas gostaria de saber qual a opinião sólida de vocês a respeito do CakePHP. valew

Renato Paiva
Renato Paiva

Apoiado!

Rodrigo
Rodrigo

Apoiado²

William Lopes
William Lopes

Excelente artigo, meus parabéns!

Tenho a mesma visão que você destes dois frameworks, são muito bons, mas o CI para iniciantes e pequenos trabalhos, ficando o Zend para desenvolvedores com mais experiência e é claro, para projetos mais relevantes.

Abraços!

Daniel Polito
Daniel Polito

Bom, utilizo o CodeIgniter há alguns anos, e não concordo totalmente com sua comparação.

Hoje o CodeIgniter conta com uma equipe separada de desenvolvimento chamada CodeIgniter Rector, tendo atualizações bem mais frequêntes.

E também temos uma comunidade muito forte, tendo vasto material a ser utilizado, como HMVC, suporte a mídias sociais e etc.

O que vejo de mais vantajoso no CodeIgniter é sua performance, e ele REALMENTE é muito facil de se alterar o CORE, dando liberdade para você mudar sua estrutura sem ao menos mexer no CORE dele.

Mexi com varias aplicações, de baixa e larga escala e o CodeIgniter me atendeu perfeitamente.

Fica a minha opinião.

Parabéns pela iniciativa.

Abraços

Alexandre
Alexandre

Muito bom esse material e os comentários, estou migrando meu trabalho de php puro para framework, escolhi o Yii como minha plataforma e estou gostando muito.

Marcio Sartini
Marcio Sartini

eu uso Codeigniter, faço qualquer coisa com ele e quando falta algum recurso, recorro as libraries do ZEND. No final é tudo PHP, então pode-se fazer o que quiser. Mas concordo que a escolha vai de cada um.

abcs,

Márcio
Desenvolverdo PHP/CF/Java

Noaldo  Sales Santos Filho
Noaldo Sales Santos Filho

Excelente post, parabéns!

Não utilizei o Code Igniter, utilizo em minhas aplicações o ZF. O que mais gosto é o fato de poder utilizar apenas aquilo que necessito, ou seja, posso utilizar os módulos de acordo com a aplicação. Não necessariamente tenho que utilizar o ZF em toda sua essência.
Acredito que a grande sacada do uso de frameworks seja essa, permitir que o desenvolvedor utilize aquilo que ele precisa.

Uso o ZF, simplesmente pq até hoje me atendeu em tudo que precisei. Mas, utilizaria qualquer outro, desde que atendesse no desenvolvimento da aplicação em questão.

É isso, até mais!

@noaldofilho

Eduardo Matos
Eduardo Matos

Já usei o Codeigniter, mas logo percebi que ele não te ajuda a médio/longo prazo, visto que seu core é bastante pequeno, e não tem componentes importantes, como autenticação, autorização, layout entre outros.

Concordo plenamente com o autor, sempre achei que o Codeigniter fosse um framework bom para iniciantes, e migrar para o ZF(ou outro framework mais maduro) acabaria sendo algo natural.

Tárcio Zemel
Tárcio Zemel

Também achei um pouco tendenciosa a análise, mas é normal.

Pelo que estudei de CodeIgniter até hoje, ele tenta manter em seu core as funcionalidades que, teoricamente, podem ser usadas em qualquer aplicação. Para além disso, existem recursos de terceiros. Sinceramente, só vejo pontos positivos nessa abordagem, pois o torna leve e rápido ao mesmo tempo em que tem excelente performance.

Descordo completamente da afirmação de que o CodeIgniter "é aconselhado para o desenvolvimento de pequenos projetos no início da sua carreira de desenvolvedor". Para quem usou ele de qualquer maneira, sem fazer as devidas pesquisas para afirmar isso com tamanha categoria, certamente não é possível ver do que ele é capaz e o jeito é tentar mexer no core para ele "fazer mágica", mesmo...

Convido uma visita a codeigniterbrasil.com para uma leitura de alguns artigos-base. Somente lendo alguns, é possível perceber que o CI dá conta de aplicações de grande porte. Com tranquilidade.

Marcelo Diniz
Marcelo Diniz

Concordo com o Tárcio!

O CI é muito bom e a performance dele é incrivel, comparando com o Zend, nem se fala, o zf se tem que mexer um monte de coisas para melhorar.... E outra, concordo q com o CI é possivel tbm fazer projetos grandes, tanto q hj em dia estou em um. Mas sei tbm q com o CI falta bastante coisa, mas agora com o lançamento do CI 2.0 e principalmente com a ElisLab liberando para a comunidade "cuidar" do CI a tendencia agora é só crescer, e isso td que se fala q falta deve vir nas próximas versões, e sim, prefiro o CI, mas não critico quem use o ZF.

Juarez
Juarez

O CI2 ainda tem muito código de php4. Use para aprender o "MVC"!

Marcelo Diniz
Marcelo Diniz

Juarez, me desculpe, mas me diga onde tem código de php4 no CI2.
Que pelo próprio change log deles é mostrado: "PHP 4 support is removed. CodeIgniter now requires PHP 5.1.6."
E sim, muito bom para aprender o MVC e tbm começar com um FW!

Tárcio Zemel
Tárcio Zemel

Quanto aplicativos você já desenvolveu em CI?

William Rufino
William Rufino

Marcelo, se você perceber que as classes do core do CI não tem encapsulamento nos métodos, então você verá que ele está em php4.

E não, não estou fazendo crítica ao CI já que eu amo o mesmo, e escrevo bastante sobre ele em meu blog no http://www.williamrufino.com.br/blog/

Eric Platas
Eric Platas

Acho que um não entra em conflito com o outro o CI pe incomparavel em agilidade s simplicidade sendo ideal pra quase qualquer tipo de projeto.

Só acho que o ZF deveria ser usado em casos extremos onde recursos mais avançados sejam realmente necessarios, porque na minha opinião um dos grandes problemas dele é a demanda de servidor com o ZF.

Mas como alternativa gostaria de citar o Symfony que é quase taão completo, mas muito mais eficiente, por isso o Yahoo usa ele em quase metade dos seus projetos, destaque pro delicious e pro bookmarks.

Manolo
Manolo

O melhor é que a gente pode usar os 2 juntos: O codeigniter como framework e os componentes zend para o que precisar: lucene e outros.

Paulo R. B. Rocha
Paulo R. B. Rocha

Uso da mesma forma: um framework como base (NEOS) e bibliotecas de outros para expandir as funcionalidades (CI, ZF, Cake, etc).
Não tenho escrúpulos quanto a isso; é tudo código livre, então é só procurar o melhor de cada um e...

Alan Souza @alanweb
Alan Souza @alanweb

Muito bom!

Comecei estudar Zend semana passada, consegui instalar ele e dar inicio a um projeto, mas senti muita dificuldade, pois trabalhava com PHP puro e já com o CodeIgniter estou me sentindo em casa. Este post explicou muita coisa.

Valeu
Excelênte Post!

Felipe dos Santos Assis
Felipe dos Santos Assis

Excelente! Trabalhei um bom tempo com PHP, passei uma época tabalhando com Java (onde tive experiência com vários frameworks como Struts, VRaptor, JSF) e gostaria de conhecer aprender algum framework em PHP. Me recomendaram ambos, mas como a maioria concordo que o CI seria mais interessante para iniciantes em Framework!

Um abraço

Jean Nascimento
Jean Nascimento

Amigo o CI possui ja há algum tempo uma lib para MongoDB na época eu até ia criar uma, porém ela ja existia.

Raffish
Raffish

Estou usando Yii Framework é muito prof. http://www.yiiframework.com/

Rui
Rui

Alguem poderia me responder?

Para quem desenvolve suas aplicacoes PHP usando o Zend como framework, na hora hosperdar no servidor local ou em um Host, eles devem ter configuracao para o suportar o Zend ou o Zend 'e so mesmo para agilizar o desenvolvimento? Tenho essa duvida

Sem mais
Sem mais

Symfony 2, Sem mais.

Raphael de Almeida
Raphael de Almeida

Faço parte do time de tradução do manual do Zend Framework.
Apesar de estarmos longe do ideal, temos muitas partes já traduzidas para o português

http://code.google.com/p/zfdoc-ptbr/

Se quiser ajudar na tradução siga o passo-a-passo http://code.google.com/p/zfdoc-ptbr/wiki/PrimeirosPassos?tm=6

Qualquer dúvida pode perguntar na lista https://groups.google.com/forum/#!forum/zfdoc-ptbr

@raph_almeida

Maycon Ghizzi
Maycon Ghizzi

A briga pelos Frameworks em php sempre vai existir, eu mesmo usei e evangelizei por muito tempo o Zend, mas de um tempo pra cá resolvi experimentar, de cabeça limpa outros frameworks, e não me arrependi, usei symfony, ci, cake, eu percebi que o framework não é a questão principal de seu projeto, não se foque somente nisso, dedique mais tempo a idéias, diagramas e modelagem. Se vc sabe programar em php, tem uma boa noção de oo, mvc, orm, qualquer framework irá lhe atender;

Bruno
Bruno

Já usei CodeIgniter e atualmente uso o FuelPHP (http://fuelphp.com/). Foi um dos frameworks PHP que mais gostei, pois se parece muito com o Rails. Vale a pena dar uma olhada. O time de desenvolvimento dele tem pessoas que contribuiram muito com o CodeIgniter e criadores do PyroCMS.
* Só pra deixar registrado.

Andre da Silva Severino
Andre da Silva Severino

Nao estou entendo o imasters, sempre quando clico mos artigos recentes mostra uma data proxima da de hoje,as quando abro o artigo percebo que ja o li ha alguns meses, o que esta havendo ?

Alexandre Jimenez
Alexandre Jimenez

Eu acho duvidosa a afirmação de que o CI é um framework com recursos básicos. Ele possui uma série de plugins que podem acrescentar uma quantidade enorme de funcionalidades

Fernando Rotermund
Fernando Rotermund

É engraçado como ninguém fala de desempenho em framework. Todos falam que o Zend é ótimo mas é rápido. Muitos dizem que a desempenho não é muito importante e sim fazer um projeto no prazo e com facilidade. Mas não vamos esquecer que mesmo com o Cache ligado o Zend ainda sim é o mais lento e não são todos os servidores que tem o APC instalado. E tem mais, o Google hoje já vela em conta a velocidade de abertura do site em conta para indexar suas páginas.
Então eu pergunto! Levando em conta que quase nenhum servidor tem o APC instalado, como dar o desempenho necessário para um framework.

André Alexandre
André Alexandre

Discordo da comparação, CI foi pensado em ser veloz e pequeno, o que não impede de fazer algo grande nele. Uma pergunta, alguém já tentou usar alguma lib do Zend Fw específica, exemplo PDF fazendo load de outros PDFs, OAuth Provider, OpenID, etc e ele atendeu 100%? Comigo tive esse problema, o Zend tenta abraçar o mundo e tem coisas que acaba não atendendo. Acho melhor não ter a funcionalidade do que ter parcialmente, porque se já existe uma lib separada que faz isso bem é muito mais fácil integrar com o seu código do que montar algo no padrão Zfw, juntando pedaços com outras libs. O CI não tem libs para PDF ou para OAuth por exemplo, mas se eu pegar um TCPDF ou a lib do oauth.net sei que poderei integrar facilmente com o framework.

André Alexandre
André Alexandre

Sempre me vem à cabeça o mapa de objetos carregados, http://blog.fedecarg.com/2008/08/04/php-applications-where-is-the-include-coming-from/, é antigo sei, mas acho que tem frameworks que estão até maiores do que nessa época.

André Alexandre
André Alexandre

Aliás mapa de requires.

Vinícius Rech
Vinícius Rech

Tirei diversas dúvidas que eu tinha sobre frameworks.
Eu estava pensando em ir diretamente para o zendmas como nunca trabalhei com nenhum framework acabei testando o codeigniter e realmente é facil de aprender.
Quando eu estiver bem acostumado já pretendo começar aprender zend qu me pareçe muito poderoso em relação a outros frameworks.

Qual a sua opinião?

Comentários considerados ofensivos serão moderados.

Parceiros

IBM
PagSeguro
Internet Innovation
Dialhost
HostNet
Tecla
KingHost
DotStore
Dinamize