Anda di halaman 1dari 9

COMPARATIVO DE FRAMEWORKS PHP

Leonardo Priori1

RESUMO: Vendo os vrios benefcios que um comparativo de frameworks pode nos trazer foi selecionado 5 frameworks com base em ferramentas como google trends e algumas bibliografias. As frameworks apresentam vrias similaridades tendo surgido em momentos prximos. Onde se destaca se o efeito da framework Ruby On Rails nas frameworks PHP. As frameworks devem ser comparadas em vrios aspectos distintos, onde se destaca: geradores de cdigo, quantidade de funcionalidades, quantidade de tecnologias, fora da comunidade, plugins e partes externas, padres, etc. Vendo estas questes e analisando framework por framework verificamos que CodeIgniter e Yii apresentam maior performance, outras como Symfony e Cake e Yii desenvolvimento mais rpido, outras curva de aprendizado menor, onde se destaca CodeIgniter. Zend uma ferramenta em vrios sentidos mais sria e maior. Ela junto com Symfony so as que mais trazem utilidades.
Palavras Chaves: Frameworks, Desenvolvimento Web, PHP, Comparativo

Este trabalho tem como objetivo fazer um comparativo de uma seleo de importantes frameworks para ambiente PHP. Assim ele servir como guia para a escolha de um framework, e tambm ajudar na tomada de decises ao se criar um framework diferente e at em decises em projetos web em geral. Mostrando diferenas nas ideologias de cada uma, performances, extenso, diferenas especficas de interface com o programador e similaridades em geral. Entende-se por framework, ou ainda arcabouo, neste escopo um pacote que traga um conjunto de cdigos que sirvam como auxlio em um projeto e ainda muitos momentos o alicerce da organizao de um projeto, tcnicas e metodologias.
1 Discente em Sistema de Informaes pela Universidade Estadual de Gois.

Diferenciando de bibliotecas que so conjunto de utilidades isoladas de altssima coeso e mnimo acoplamento. Tambm no confundir com CMS (Gerenciador de Contedo) que um sistema pronto, mas que por geralmente ser altamente configurvel sirva tambm como base para projetos bastante distintos. 1 - Quais Frameworks Para este trabalho utilizaremos os frameworks Zend, Symfony, Cake, CodeIgniter e Yii. Zend, Symfony e Cake so as mais antigas. Depois temos CodeIgniter e por agora a emergente Yii vem alcansando destaque similar s outras. Google Treds uma ferramenta do google que nos permite comparar buscar feitas no buscador. Por ela foi comparado buscas primeiramente por estas tecnologias. Verificados riscos de m interpretao chegamos a concluso que aquelas so os frameworks importantes. Entre os riscos vale notar que Cake PHP ter muitos resultados se comparado com outro nome mais PHP, pois o framework geralmente muito comumente chamada de CakePHP. Tambm deve-se verificar a palavra Cake sozinha ou Igniter vai remeter a resultados muito distintos dos relativos aos frameworks pois estas so palavras comuns. Outro risco pesquisar por Zend sem verificar que Zend este o nome da empresa que desenvolve a linguagem PHP. A quantidade de resultados em pesquisas tambm foram usados para esta seleo. O site www.phpframeworks.com um site especializado em frameowoks php. Ele apresenta dois top 10, um intitulado Top 10 Hot PHP Frameworks e outro Top 10 Ranking PHP Frameworks. Na primeira lista vemos as cinco frameworks escolhidos para este trabalho nas primeiras posies, na segunda lista quatro destas esto no topo, contudo a Zend cai algumas posies. No livro de Elton Lus Minetto, Frameworks para Desenvolvimento PHP ele trabalha com os trs frameworks principalmente deixando de lado a CodeIgniter e a Yii que so justamente s mais novas. 2 - Similaridades e Histria J a algum tempo os maiores frameworks so Zend, Symfony, Cake e CodeIgniter. Zend teve sua verso 1.0 lanada em 2007, mas a primeira verso beta pblica em 2006. Symfony teve o projeto lanando em outubro de 2005 e sua distribuio 1.0 somente em 2007. J Cake comeou em 2005. CodeIgniter teve sua primeira verso em 2006, apesar de s ter comeado a fazer sucesso um pouco depois

em 2007 e 2008. Yii bem mais recente comeando em 2008 e pode ser considerada emergente.

Ruby on Rails, o framework para desenvolvimento de projetos web com a linguagem Ruby lanada em 2004, provavelmente influenciou um pouco todas estas frameworks e certamente influenciou CakePHP. Ela trouce vrias caractersticas encontradas nestes frameworks PHP como preocupao com AJAX, ideologia conveno versus configurao e padro MVC, geradores de cdigo, etc. Alguns diferenas primordiais que devemos notar que Zend a maior em vrios sentidos e a com postura mais comercial. Junto com CakePHP e Symfony so os frameworks mais conhecidos. Symfony assim como Zend uma biblioteca grande de muitas funcionalidades e voltada a grandes projetos e utilizada em muitos sites grandes. Utiliza Doctrine para a camada de viso e YAML para definir algumas coisas. CakePHP fortemente inspirado em Ruby on Rails traz grande parte de suas ideias, como Scaffolding e Active Record. CodeIgniter desenvolvido pela EllisLab, a mesma empresa do famoso CMS ExpressionEngine. Framework de rpida performance e geralmente classificado como uma ferramenta de fcil aprendizado. Por fim temos a Yii que que mais vem ganhando fama ultimamente. Promove uma imagem de alta performance. 3 - O Que Considerar Muitas coisas devem ser consideradas ao escolher um framework. Neste trabalho daremos enfase a alguns aspectos. So estes: Geradores de cdigo: muito comum encontrar se scripts nestes frameworks que geral cdigos para edio futura. Geralmente cdigos de configurao, sistemas CRUDs simples, listagem com paginao, etc. A presena disso sugere um frameworks com menos cara de biblioteca e com mais cara de framework. E indcio que ela mais obstrutiva e pede mais conhecimentos do frameworks para utiliz-la em sua plenitude. Quantidade de funcionalidades. Muitos frameworks em sua biblioteca trazem mais que o bsico dando suporte a inclusive a webservices do flicker, google, facebook, etc. O que normalmente no utilizado e traz um peso a mais o framework, pois mais problemas para a comunidade e os desenvolvedores trabalhar. Por outro lado bom quando se necessita destas utilidades que elas sejam desenvolvidas utilizando os

mesmos padres e ideologias coerentes, o que uma vantagem quando comparado com utilizar bibliotecas externas. Quantidade de tecnologias, linguagens, padres, configuraes que o framework utiliza. Geralmente PHP cr somente uma parte do que o framework disponibiliza. Elas trabalham bastante com outras tecnologias como XML, YAML, scripts geradores de cdigo, linguagens de templeat, etc. Estas tecnologias podem agilizar o desenvolvimento e a manuteno dos projetos, contudo elas aumentam a curva de aprendizado, a responsabilidade do framework e de certa forma poluem o projeto. O desenvolvedor pode estar utilizando tecnologias que no representam um avano. Comunidade. Geralmente estes frameworks tm licenas livres. O tamanho e o peso da comunidade ativa no projeto forte indicativo que o framework tem poucos bugs, de mais fcil manuteno, menos arbitrria em suas decises, maior performasse, etc. Poucos pontos negativos pode haver em se ter uma grande comunidade atuante. Talvez a dificuldade de se aderir a mudanas drsticas pode atrasar um pouco a tecnologia. Plugins e partes mantidas por projetos externos. Vrios frameworks trazem no seu pacote padro ferramentas mantidas em projetos externos como Doctrine e Propel no Symfony. E mesmo quando no trazem em seu pacote padro possvel adicionar plugins externos (Third part). Isso til para o foco do projeto, mas por outro lado faz com que o framework seja menor no sentido de ser em parte um agrupado de outras bibliotecas ou frameworks. Padres. comum que elas obriguem ou incitam a utilizao de padres. muito comum a obrigatoriedade de colocar classes em arquivos com o mesmo nome da classe e em pastas especficas. Outro padro muito comum quando se trata traduzir endereos URL em chamada a controles especficos. Estes padres tiram a liberdade do projeto, aumentam a curva de aprendizado, mas tendem a facilitar a manuteno de projetos, o trabalho em equipe e o tempo de desenvolvimento. O padro Model View Controller normalmente dita o ritimo e a estrutura dos projetos. Em alguns frameworks a obrigatoriedade de se criar modelos e vises para cada controle pode ser um problema. As convenes de nomes geralmente no so muito flexveis e podem ser um problema tambm. Que um pouco compensado com a utilizao de scripts geradores de cdigo. O ORM presente na camada de modelo varia

bastante tambm. Active Record, Database Access Object e outras solues so encontradas. Controle de cache algo de muita importncia em projetos grandes e os frameworks lidam com isso de vrias formas, contudo este artigo resolveu no aprofundar nesta rea. Utilidades de AJAX so encontradas tambm, apesar de no haver nada muito revolucionrio de forma que CodeIgniter que no traz isto em seu ncleo no ser muito prejudicada. UnitTests algo bastante extenso e que faz bastante diferena, mas foi optado no dar foco a isto tambm. 4 - Symfony Symfony o mais antigo dos frameworks com que este artigo lida. Ela foi lanada em outubro de 2005. Utiliza o pear.php.net, que uma ferramenta para distribuio de bibliotecas PHP. Sites de grande porte tm utilizado ela. Como o exemplo do Delicious, Yahoo Respostas e Dailymotion. Certamente foi muito influenciada pelo Ruby On Rails e suas ideologias. Trabalha bastante com geradores de cdigo. Utiliza YAML para configuraes, especificaes, uma linguagem muito simples de marcao. Possui uma quantidade muito grande de funcionalidades e uma comunidade forte. Uma crtica que se pode fazer que ela um projeto sem grande coeso visto que trabalha com YAML que a princpio uma tecnologia distante de PHP, traz duas opes quanto a ORM de dois projetos externos, muitas ferramentas para linha de comando. Ela pode trazer uma curva de aprendizado maior e tambm ser menos coesa. Esta aparente baguna pode ser uma consequncia dela trazer grande parte das ideias mais reconhecidas atualmente. E visto a simplicidade do YAML, os geradores de cdigo, o tamanho da biblioteca, quando dominada provem um desenvolvimento mais rpido. 5 - Zend Framework Zend Framework mantido pela Zend que uma empresa fortemente ligada ao PHP em si. Os fundadores da Zend inclusive so grandes contribuidoras da linguagem. uma empresa de produtos de sucesso como por exemplo a certificao Zend, uma IDE baseada em Eclipse e um servidor de pginas chamado Zend Server. Ela antiga, possui parceria com grandes empresas como IBM e Oracle.

E a maior em vrios sentidos e a com postura mais comercial. Sua comunidade participativa muito grande. A busca por Zend no google encontra 24 mil resultados enquanto qualquer outra busca do tipo no encontrar mais que 5 mil. Uma pesquisa por framework mostrou na terceira posio o site do framework sendo que no mostra mais nenhum site de framework especfica na primeira pgina (pesquisa realizada em 16/06/2011). A documentao bem completa. E a biblioteca vasta, inclusive trazendo utilidades para web services do google, do yahoo, etc. No obriga seguir uma estrutura predefinida, apesar de normalmente por causo da forma como trabalha com MVC se siga sempre a mesma estrutura de organizao. bastante fechada, no sentido de no ter partes importantes referenciadas a projetos esternos, como acontece com o ORM em Symfony. E a neste sentido a mais coesa (apesar de entre outras coisas poder se utilizar XML para configuraes). 6 - CakePHP Assim como Symfony, sofreu muita influncia das idias do Ruby on Rails e Symfony inclusive o framework mais prxima dele. Mais restrito quanto a convenso de nomes e no tem um gerador de cdigo to potente quanto Symfony. No utiliza YAML e mais simples e mais coesa que Symfony, assim como trazer um aprendizado mais rpido. Tambm deve se notar que Cake apresenta Scaffolding e Symfony no. Inclusive das frameworks que este artigo abrange somente Cake e Yii trazem a funcionalidade. Scaffolding gera sistema de gerenciamento (normalmente no mais que um simples CRUD) sem gerar cdigo e sim somente setando configurao ou chamando um mtodo. 7 - CodeIgniter Framework bastante focada e de alta performance. sempre lembrada como um framework fcil para o desenvolvedor (certamente fcil de instalar e comear um projeto). Tambm um framework bastante focado no seu propsito bsico, trazer um MVC til e algumas ferramentas indispensveis. No lida muito com tecnologias dististas, no tem por exemplo ferramentas para JavaScript (considerado agnstico no JavaScript, JavaScript agnostic), no tem ORM (sua camada de modelo bem simples). 8 - Yii

Yii alega no ser um subproduto de algum projeto, nem um conglomerado de trabalho de terceiros. O que mostra a preocupao com o foco. No incio do desenvolvimento ela j disponibiliza um sistema simples com inclusive login. O pode soar topetudo e uma fuga ao propsito. Afinal, por que no deixar isso para alguns comandos depois do projeto iniciado A gerao automtica de cdigo e arquivos inclusive pode ser feita pelo projeto on-line quando logado como administrador (somente possvel em ambiente de desenvolvimento normalmente). Framework simples e de fcil instalao, com muitas ferramentas para desenvolvimento acelerado. Alega ser o framework que gera sites de maior performance e de se esperar que realmente seja. Concluso Normalmente a melhor escolha utilizar o framework que mais se domina visto a curva de aprendizado. Caso se queira um framework de fcil aprendizado a melhor escolha seria CodeIgniter ou talvez Yii ou Cake. Para desenvolvimento realmente acelerado e sem se preocupar em ter um framework pouco focado no propsito Symfony e Cake ou ainda Yii. O que normalmente far verdadeira diferena em projetos menores. Para projetos grandes se tem utilizado muito Symfony e Zend. A seriedade com o foco da ferramenta e com sua coeso do Zend pode ser uma grande vantagem para grandes projetos. Um problema poderia ser o fato destas duas frameworks terem uma performance menor o que acaba atrapalhando a escalabilidade. So reconhecidas como as de maior performance CodeIgniter e Yii. Caso se necessite trabalhar com muitas funcionalidades, inclusive webservices Zend traz isso muito bem. Para algo mais similar ao Rails (visto que a framework mais popular ltimamente e em certa medida a mais respeitada) CakePHP ou symfony. Glossrio Agnstico: No contexto da informtica geralmente diz a respeito da independncia de certas partes. Top 10: Lista de 10 melhores, maiores ou algo no sentido. Third part: Parte separada, como um plugin externo por exemplo.

YAML: Linguagem de especificar dados, no mais do que uma arvore de dados geralmente. utilizado para configuraes e descries. XML: Popular linguagem de marcao. Propsitos parecidos com o do YAML. Templeat: Modelo, estrutura. Esquema que utilizado com certos parmetros resulta na interface com o usurio ou cdigo. Licensas livres: Tm licena livre quando direitos de cpia e utilizao mais permissveis. Podendo normalmente se ler o cdigo fonte. Model View Controller (MVC): Padro que prega a diviso grande destas 3 camadas: viso, controle e modelo. Object-relational mapping (ORM): Padro onde se mapea o banco de dados em objetos ricos. Active Record: Um padro de ORM. As classes referenciam e seus mtodos estticos referem s relaes e suas instancias aos registros. Database Access Object: Um padro para ORM. Cache: No artigo Cache no se refere a memria cache contida nos processadores, mas a dados (arquivos) resultados de processamentos anteriores que no precisam ser refeitos em alguns casos e que por isso so mantidos para melhorar a performance. AJAX: Tcnica de desenvolver sites ricos que fazem vrias requisies ao servidor buscando interatividade sem recarregar a pgina como um todo. UnitTests: Unidades de teste. Ferramentas para se executar testes automatizados nos projetos. IDE: Sistema que integra vrias ferramentas ao desenvolvedor. Geralmente utilidades como: compilador, editor de cdigo, gerenciador de verses, etc. Eclipse: Popular IDE livre. Web Services: Mtodo de comunicao entre mquinas sobre plataforma web.

Referncias: MINETTO, Elton Lus. Frameworks para Desenvolvimento em PHP. So Paulo: Novatec Editora Ltda, 2007. Top 5 Frameworks PHP. TI Digital, n. 15, p. 26-36, maio 2010. KARL KATZKE. PHP: Symfony vs. Zend <http://ww.karlkatzke.com/phpsymfony-vs-zend>. Acesso em: 15/05/2011 Discussing PHP Frameworks: What, When, Why and Which?. <http://www.noupe.com/php/discussing-php-frameworks.html>. Acesso em: 16/05/2011 Zend Framework. <http://framework.zend.com>. Acesso em: 09/05/2011 Zend.com. <http://www.zend.com>. Acesso em: 08/05/2011 CodeIgniter. <http://codeigniter.com>. Acesso em: 08/ 05/2011 CakePHP. <http://www.cakephp.com.br>. Acesso em: 10/05/2011 symfony. <www.symfony-project.org>. Acesso em: 09/04/2011 CakePHP. <http://cakephp.org>. Acesso em: 09/04/2011 Yii Framework. <http://www.yiiframework.com>. Acesso em: 09/04/2011

Anda mungkin juga menyukai