Back-End

27 dez, 2011

Comparativo: Code Igniter versus Zend Framework

Publicidade

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!