Zend Framework ou Code Igniter?
A muito tempo atrás, o Felipe Diesel pediu para eu fazer um comparativo entre os frameworks Code Igniter e Zend. Andei comentando sobre ambos, pois no trabalho optamos pelo Code Igniter, enquanto isso, havia optado pelo Zend Framework para tocar alguns projetos pessoais.
É bom lembrar que, quando optamos pelo CI, o Zend Framework ainda estava na versão 0.x, e descartamos a possibilidade de trabalhar nessa versão ainda beta. Mas vamos aos fatos
Code Igniter
Como eu já disse aqui antes, o Code Igniter é muito prático. Inspirado no Ruby on Rails, é possível começar o desenvolvimento da aplicação apenas configurando os diretórios (se você não usar o padrão) e conexão com banco.
Ele implementa o MVC e traz diversas funcionalidades pra facilitar o desenvolvimento, como o padrão Active Record, Scaffolding e bibliotecas como Paginação, Validação, Compactação (zip) e etc. Facilmente extensível com a implementação de plugins e helpers, além de possuir diversas ferramentas como um gerador de código e bibliotecas de interface como o Rapyd, que, na minha opinião, não foi bem integrado ao framework.
Os problemas que eu vejo no Code Igniter são pequenos detalhes, como a falta de padronização de nomenclatura de arquivos e, a pior delas, a desorganização do código do framework.
Zend Framework
Do outro lado, o Zend Framework é o framework PHP mais organizado dos que testei até hoje. Com nomenclatura de classes agregada aos caminhos do arquivo, é muito fácil encontrar o que você procura. Houve também uma preocupação em manter o código simples, pensando em manutenibilidade, que também tornou muito fácil a criação de extensões para o Zend, através de Helpers, Plugins e etc.
Por outro lado, pra você configurar o Zend Framework são necessários alguns passos a mais e um nível de conhecimento maior, porém, feito uma vez, você pode usá-la em todas as aplicações que for desenvolver, realizando apenas pequenos ajustes.
Conclusão
A grande verdade é que tudo depende da aplicação. Eu vejo o Zend Framework como algo mais robusto, para ser utilizado em aplicações que necessitem da organização e da base sólida da Zend, que assina o framework. Do outro lado, está o Code Igniter, ágil e prático.
O que você prefere?

September 11th, 2007 - 01:57
Poxa, eu queria uma ajuda, não mais dúvidas!
September 11th, 2007 - 09:21
E aí Newton. Esse seu post foi interessante.
Eu particularmente gosto muito da organização do ZF. Acho que a modularização dele é muito boa enquanto o Code Igniter na época que o olhei era muito engessado e não permitia que eu removesse componentes que eu não utilizaria. Não sei como está hoje nesse aspecto, já o ZF me permite isso.
Isso para mim tem importância, principalmente nos sistemas que utilizo em shared hosts devido ao espaço em disco. Removendo os componentes que eu não utilizo eu economizo em espaço de disco.
No aspecto qualidade de código, o ZF ganha também, como você mesmo citou no seu post. O Código do ZF é um código bem simples de ler o que o torna facilmente extensível, escalável, etc.
Eu continuo com o ZF.
Abraço.
September 11th, 2007 - 14:11
Felipe, estou aguardando suas dúvidas.
.
Adler, concordo com o que você disse, e acrescento que o CI continua da mesma forma. Não dá pra remover funções até mesmo por que o código não é dos melhores e fica complicado identificar dependências.
O problema que enfrentei no ZF foi começar. Pra configurar a aplicação você precisa configurar muita coisa e isso reflete na sua aplicação. Mas acho que após o lançamento da versão 1.0, o framework deve ficar mais estável e não ter grandes alterações estruturais.
Também prefiro o ZF, e obrigado pelos comentários.
September 11th, 2007 - 19:30
Adler e Newton, permitam-me descordar de vocês, mas mostrei o porque.
Bem, o Newton disse que o CI não tem uma padronização para nomenclaturas. Gostaria de saber o motivo, pois até onde eu sei existe todo um padrão para criar nomes para Controllers, Models e até Helpers.
Adler no CI para vc utilizar os componentes basta simplesmente vc carregá-los e isso pode ser feito de duas formas: em um arquivo "autoload" que irá carregar sempre ou na hora do uso desse componente. Se vc não utilizar nenhum dois modos, o framework não irá carregar esses componentes. Estou partindo do principio que vc chama de componentes as libraries, plugins e helperes, ok? Caso vc ainda prefira remover esses componentes, vc pode muito bem removê-los, ao menos que não sejam componentes vitais para o funcionamento do framework, o que existe em TODO framework.
A modularização do CI nessa novo release (1.5.4) está muito melhor, pois permite que vc tenha N aplicações usando um mesmo core. E caso tenha necessidade de customizar determinados componentes (libraries, models, configs) vc pode assim fazer, caso não queira, pode usar esses recursos compartilhados por toda aplicação.
No que diz respeito a qualidade do código a única desvantagem que eu vejo do CI em relação ao ZF é que o ZF é PHP5, ou seja, tem uma OO mais bem escrita que o CI. Mas mesmo usando a OO do PHP4 o CI consegue ser muito escalonável e está mentindo quem disser que o CI tem um código ruim. Gostaria até que me apontassem o motivo, pois ele usa todas boas práticas que a OO do PHP4 permite.
Caso queira remover funções de uma determinada lib, vc pode assim fazer … mas não espere que essa Lib funcione perfeitamente, pois vcs devem saber que em OO os métodos de uma classe podem ter uma relação. Muitas libs usam recursos de outras libs, o que é perfeitamente correto no conceito de reaproveitamento de código. Caso não gostem de determinada funcionalidade de uma librarie, basta apenas extendê-la e usar o que achar interessante. Se não gosta nada de uma librarie, crie uma nova. O CI é totalmente claro e flexível para isso.
Estou levantando todos esses pontos, pois achei a comparação de vcs meio injusta, ainda mais por não apresentarem pontos claros. Estou aberto a escutar a opnião de vcs e manter um debate saudável sobre o assunto.
No que diz respeito a comparação entre ZF e CI, eu acho perfeitamente tranquilo cada um ter sua preferência, pois cada um sabe das suas necessidades. O ZF é muito promissor, justamente por ser desenvolvido pela Zend, mas subestimar o CI eu não concordo
[]s
September 11th, 2007 - 22:58
Marcus, primeiro vou agradecer pelo comentário. Contribuiu muito para essa discussão.
Em relação à qualidade do código do CI, quando eu comecei a trabalhar com ele enfrentei alguns problemas, que até citei aqui (o bug do My_Model). Existiam funções e, com a mesma funcionalidade, métodos em classes. No core, as vezes a função era utilizada, as vezes era utilizado o método da classe. Isso gera inconsistência.
A padronização se refere justamente à diferença dos arquivos da aplicação e do Core. As libraries do CI são nomeadas como o nome da classe, por exemplo: Ftp, Hooks e Controller. Enquanto que as classes da aplicação precisam ser sempre em letras minúsculas. Também tivemos problemas em relação a isso na época da implantação do CI.
Confesso que não estou acompanhando o CI tanto quanto gostaria ou até mesmo deveria, pois estou um pouco afastado do desenvolvimento, mas ficou a impressão destes problemas.
Mas não me interprete mal. Não subestimo o CI e até me rendi à sua praticidade, mas ainda prefiro a organização do ZF.
September 14th, 2007 - 12:54
"Cake" é melhor.
Zend é completo de mais, pesado..
CI é simples de mais.
"Cake" é melhor.
[]'s
October 26th, 2007 - 12:49
Eu olhei estes frames, mais não entendi como instalar, poderia me ajudar nesta questão?
Obrigado.
October 4th, 2009 - 22:55
Vin num site (Issuu) que voce disponibilizou o Guia do Usuario do code igniter em pdf só não consegui baixar, será que tem como voce me mandar o link do donwload do arquivo. VALEU!
May 10th, 2011 - 13:31
Eu uso o CI e o Zend, cada um em empresas distintas. Estou gostando muito da praticidade do CI e da agilidade como é possível fazer um código. Já o Zend, é o “todo poderoso”, e acho essencial o seu conhecimento principalmente a sua grande quantidade de “componentes” que é possível de utilizar.
Fiquei pensando em como poderia aproveitar bem os dois framework, então pesquisei e vi que tem muita gente que uni o CI e Zend, onde usa a programação do CI e os componentes do Zend. Achei bem interessante e vou arriscar utilizá-lo!
Essa coisa de desmerece o CI, eu não concordo! Temos que aproveitar o melhor de cada framework de acordo com cada projeto a ser desenvolvido.
December 7th, 2011 - 16:41
Aqui na agência onde trabalho, usamos o ZF, pra min é o melhor, é o que tem mais documentação e o mais organizado.