Prefácio
Tem-se falado muito em frameworks PHP ultimamente. Esta onda começou com o advento do famoso Ruby On Rails. Hoje temos várias pessoas utilizando estas ferramentas, porém há um problema: existem muitos frameworks. Cada um deles possui prós e contras e isso torna a tarefa de escolher um muito, muito punk.
Entenda que escolher o framework “certo” depende totalmente das necessidades pessoais e do projeto. Não vou falar das ferramentas que cada um possui, apenas um conceito geral. Você pode ver este artigo (em inglês) que é um relatório de benchmark. Outro site bacana que você pode acessar (também em inglês) e o PHP Frameworks, que possui um comparativo
Aqui vai uma pequena lista dos frameworks que considero mais promissores/úteis/práticos. São eles: Zend Framework, CakePHP, CodeIgniter, Prado, Symfony e o brasileiro Spaghetti*.
Todavia, existem muitos outros frameworks disponíveis no mercado e, claro, você pode colaborar com essa discussão nos comentários. :)
Zend Framework
O framework mais badalado do momento. E também não é pra menos, pois a criadora do framework (a Zend) é a mesma empresa que mantém o desenvolvimento do PHP. É rico em funcionalidades e é também o mais rápido. Infelizmente, todo esse poderio faz com que esta ferramenta torne-se muito grande (a modularização do framework pode resolver isso). Não funciona com o PHP 4 (o que não chega a ser um contra, apenas uma observação). É um framework para quem deseja construir grandes aplicações (embora também possa ser utilizado para pequenas e médias). Além de possuir uma documentação extensa e diversas publicações relacionadas, existem diversos programadores sérios que testam exaustivamente todos os códigos que são desenvolvidos antes de liberar para produção.
Visite o site do Zend Framework
Visite o site da comunidade brasileira do ZF
Symfony
Um dos frameworks mais poderosos e é muito bem dividido. Todas as tarefas são modulares e o framework utiliza diferentes camadas para manejar os dados. É bastante útil para projetos com necessidades de grandes funcionalidades. Contudo, de todas as opções citadas, é o mais lento de todos.
Prado
Este é o mais peculiar dos frameworks para PHP. Não é um clone do Rails. É melhor chama-lo de “ASP.net no PHP”. Este framework provê uma aplicação baseada em eventos, tal e qual o ASP.net, que é famoso por ser uma das ferramentas frequentemente escolhidas para aplicações de grande porte. Este framework é relativamente novo e, com certeza, não tão poderoso quanto o ASP.net, mas pode ser uma boa ferramenta pra quem vem do ASP.net ou para quem quer migrar para lá (não recomendo que façam isso :P).
CakePHP
O melhor port do Rails para o PHP, na minha opinião. CakePHP é um framework promissor, pois possui toda a facilidade que o Rails dispõe. Possui uma comunidade bastante ativa e já é utilizado em produção por diversas empresas e sites. Inclusive o CMS Mambo (cria do Joomla) decidiu utilizar o Cake. Destina-se a qualquer tipo de aplicação e também possui uma base gigantesca de componentes e plugins.
CodeIgniter
Aqui temos o framework que pode ser chamado de “CakePHP mais fácil”. Ele não força o desenvolvedor a utilizar o padrão MVC como o Rails ou o Cake, portanto é mais simples para iniciantes. Ele também possui uma comunidade muito ativa, documentação bastante detalhada e diversos componentes adicionais. É também mais rápido do que a maioria dos frameworks disponíveis.
Visite o site do CodeIgniter
Visite o site da comunidade brasileira do CI
Spaghetti*
Framework brasileiro, bastante poderoso, que possui uma estrutura de diretórios semelhante à do CodeIgniter. Ele é bastante interessante por possuir todos os comentários dos códigos em português. Possui uma documentação relativamente boa e estimula a utilização de boas práticas de desenvolvimento como utilização de camadas, controle de versão e refatoração de código.
Conclusão
Eu, pessoalmente, adotei o Zend Framework. Mas vamos dar uma olhada geral no que pudemos perceber nos frameworks aqui listados.
O CakePHP se encaixa em praticamente qualquer projeto, e desenvolver com ele é bem rápido. Contudo, muitas pessoas podem não gostar do seu “amor” por convenções. Sugiro que iniciantes ou pessoas que odeiem convenções, utilizem o CodeIginiter. As grandes empresas irão utilizar o Zend e pessoas procurando por novos desafios utilizarão Prado ou Spaghetti*.
Espero ter dado uma visão geral de cada framework e poder auxiliar na sua decisão.
Vale lembrar também que a utilização de certo framework em um determinado tipo de projeto pode ser realmente um tiro no pé, portanto escolha com sabedoria.
Um abraço a todos e fiquem com Deus.
Rafael Jaques
O Spaghetti é muito promissor, e, na minha opinião, o mais fácil de todos para iniciantes.
Depois de iniciar com ele, parece que os outros ficaram mais difíceis de trabalhar.
Estou criando um com meus colegas aqui do trabalho, que visa principalmente performance. a documentação é minima (somente alguns comentários no codigo), mas ele vem com uma aplicação de exemplo. dê uma olhada.
http://vortice.googlecode.com
e alguns sites que usam:
* http://to.gov.br
* http://jalapao.to.gov.br
* http://faleconosco.to.gov.br
A grande vantagem dele é que é construído para quem sabe programar e sabe muito de SQL, além de não amarrar. apesar de ser MVC, caso você queira (ou precise), dá para quebrar a regra…
[]'s
Concordo com o Klawdyo, realmente o Spaghetti por ser em portugues eh muito mais facil para aprender e para iniciantes com PHP.
MAs nao apenas, eh muito poderoso e apos aprender a sintaxe nos faz economizar muito tempo.
Realmente esse Spaghetti* é bem interessante.
No Brasil também temos um framework chamado Miolo, mas eu não tive a chance de testar ainda (falta de tempo).
Se alguém já usou, por favor, deixe sua opinião sobre ele! :D
Eu já usei o Spaghetti, CodeIgniter e CakePHP e decidi ficar com o CakePHP
Eu uso atualmente o ZendFramework e já trabalhei com o Prado a alguns anos atrás, mas já ouvi falar muito bem do CodeIgniter, Symfony, CakePHP
Muito bom esse post falando dos frameworks.
Eu uso e aprovo o Spaghetti*, tenho usado ele em todos sistemas aqui da agência e não me deixou na mão em momento algum, tudo que preciso ele pode me fornecer.
É realmente bastante poderoso.
Depois do primeiro sistema pronto, os próximos ficaram 846239407234milhões de vezes mais rápido de programar.
Abraços
Fiquei bastante curioso sobre o uso do:
>> http://www.akelos.org/
Alguem jah teve alguma (boa|ma) experiencia com ele?
Eu fico com o Zend Framework.
Brinquei um pouco com o CodeIgniter e me impressionei com a simplicidade, o CakePHP para ser uma boa !!!
Tem um site que faz uma listagem de frameworks php e suas funcionalidades, se alguém quiser dar uma olhada: http://www.phpframeworks.com
Legal, show de bola o post, há quase um ano utilizo o zend framework, vale a pena destacar sua modularidade, sendo possível acoplar "qualquer coisa" no framework, no meu caso os exemplos mais bem sucedidos foram o tcpdf, doctrine ORM, e uma library própria de funcionalidades que não estavam presentes no framework.
bastante interessante a discussão eu já olhei o zend,code igniter,spaghetti e no fim montei uns padrões meus e umas classes que achei pela net e uso isso queria aprender o zend mas só pra configurar pra começar a poder usar já é uma demora ,muita config pra ser feita já desanima ali rs
Ótima comparação de frameworks!
O CakePHP possui um gerador de código realmente ágil, chamado Bake. Em 5 minutos é possível fazer um sistema.
Vale citar também o Kohana (http://kohanaphp.com). Este framework tem a estrutura bem parecida com o CodeIgniter e entre outras funcionalidades implementa ORM.
Bom hoje existe muitos frameworks só que sou da seguinte opnião de eu não conheço 100% do frameworks não uso, hoje tenho um frameworks proprio o iGrape (http://www.avelino.us/projects/igrape/)
É bem simples e funciona.
Cara, muito bom o artigo.
Eu estou utlizando o Zend tb, mas já estou de olho no Cake. Vejo muitas vagas no mercado.
ahs,
já me interessei e brinquei com CakePHP, Akelos e CodeIgniter. o que mais gostei foi o CodeIgniter, e também o único que usei num projeto sério (embora com uma série de alterações).
acho que se tivesse que escolher algum hoje de novo, iria dar uma boa olhada no Kohana. :)
Eu estou pensando em voltar do java para o php, e gostaria de saber se algum dos frameworks citados tem implementa controles de tela, tipo o richfaces do java.
valeu
Ótimo artigo. Estou procurando um bom framework para o meu trabalho e foi muito bom dar uma lida por aqui.
Saudações!
Só uma correção o padro não é relativamente novo, tem versão desde de 2006
Caros, testei tanto o cake php quanto o codeigniter, para quem quer fazer aplicações para grandes audiencias não recomendo o cakephp, consume muita cpu doi web server, o mais rápido mesmo é codeiginiter
Bom estou fazendo um trabalho de framework akelos, e tem muita coisa para esclarecer:
Tipo:Vantagens e desvantagens de se utilizar akelos.
Quais as empresas que usam?
Compatibilidades?
Exemplos de códigos(explicando-os).
Por favor, se possivel me passar até 08/10/2010.
Obrigado
Estou utilizando o CodeIgniter no trabalho, e realmente fiquei impressionado com a facilidade de uso, pouca configuração, linguagem propria para chamar os arquivos, como o load, ao invez das includes de outros framewroks e o mais sensacional de tudo, a documentação dele que é fantastica, afinal, por incrivel que parece foi uns dos motivos do framework codeigniter ter sido criado.
Atualmente é o unico que estou usando, mas confesso ter curiosidade de tar aprendendo outros como o zend e o cake ou ate mesmo o qphp. Por isso não posso falar que o code é o melhor sem conhecer os outros, posso falar que estou gostando muito e esta atendendo minhas necessidades e da empresa tbm.
valew
Foi uma luta para escolher qual Framework utilizar rs.
Fiquei em dúvida sobre dois: Zend ou Cake.
Então comecei meus estudos pelo Zend, confesso que apanhei de mais para roda-lo na minha máquina, mas finalmente consegui. Já com o Cake foi tudo mais simples, mais fácil, uma maravilha.
Porém escolhi o Zend! Porque achei a estrutura dele animal, a forma de integrar novas classes(Helpers…), interagir com o Doctrine, etc.
Fica ai minha humilde opinião!
Trabalho com Zend na empresa e CakePHP nos projetos pessoais e acho até um insulto comparar o Cake ao Zend, visto que o Zend é bem menos ágil, e dar liberdade demais pro desenvolvedor gerando bastante desorganização.
O Zend trata validação no controller e gera formulários do lado do controller tbm o que chega a doer no coração ter que fazer isso e quebrar o padrão MVC, alem de dispensar a camada de visualização em muitos pontos.
Continuo engolindo o Zend no trabalho, mas estamos quase migrando pra Rails.