Após experimentar alguns frameworks PHP, recentemente tenho aplicado bastante tempo no estudo do CodeIgniter, e tive o prazer de redescobrir a diversão em programar nessa linguagem um tanto controversa.
Logo de cara, quero recomendar o screencast da Nettus+ chamado CodeIgniter From Scratch. Um excelente material para aprender (e se aperfeiçoar) a desenvolver aplicações web com PHP.
Não há mistérios na forma como o CodeIgniter trabalha com o MVC, utilizando o “MVC clássico”, com as rotas baseadas nos nomes do controlador e das actions, modelos com ORM através da ActiveRecord, e views utilizando a linguagem natural do PHP para gerar a visualização das suas páginas.
E este último, acredito ser uma das grandes vantagens do PHP com MVC. Escrever views com PHP é muito mais “natural” do que em qualquer outra linguagem (claro, se você entende de PHP). Não é necessário aprender nenhuma “linguagem de template”, como em alguns frameworks, pois é normal escrever o PHP “mesclado” ao HTML.
Em comparação à CakePHP ou à Zend Framework, a verdade é que o CodeIgniter é relativamente “seco”. Ou seja, temos menos “recursos mágicos” e somos obrigados a por a “mão na massa de verdade” em algumas situações. Embora isso seja encarado como um ponto negativo por alguns, essa característica acaba resultando em maior performance e simplicidade.
A partir da versão 2.0, o CodeIgniter deixou de dar suporte ao PHP 4, o que alavancou a sua performance (já que não é mais necessário criar fallbacks para os recursos do PHP 5). Essa decisão permite que o framework rume cada vez mais para o caminho da Orientação a Objetos, e que torne a nossa vida cada dia mais simples :)
E performance é uma das qualidades e diferenciais do CodeIgniter. Segundo o benchmark realizado por Leng Sheng Hong, o CodeIgniter fica atrás apenas do (também excelente) DooPHP:
Em tempos onde performance e disponibilidade são premissas, e não mais diferenciais, ter uma boa ferramenta ao seu lado facilita muito o trabalho de atender a essas expectativas.
Essa qualidade eu descobri recentemente, quando tive que usar a SDK do Facebook para desenvolver uma aplicação social com o CodeIgniter.
Foi tão simples quanto jogar a classe como uma biblioteca, fazer alguns ajustes de nomenclatura e construção, e pronto! Estava pronta para usar, dentro da estrutura e fluxo do CodeIgniter.
Estender o framework é simples e prático. Escrever hooks e helpers é tão natural quanto escrever funções. Essa simplicidade vem aliada a uma coleção de features prontas disponíveis com o core do framework. Também vale mencionar a facilidade de configuração e instalação.
Se você procura um framework PHP simples, que não seja tão “mágico” e que permita para você um trabalho descomplicado com o MVC, recomendo CodeIgniter.
É claro que ele tem algumas desvantagens se comparado a outros frameworks do mercado. Por exemplo, acredito que o desenvolvimento com o CakePHP seja mais ágil e fácil se comparado ao CI (é claro, isso tem um custo na performance e tamanho). Mas com a versão 2.x, é visível que a ferramenta está caminhando para um desenvolvimento de alto nível.