Agilidade em PHP – Conhecendo algumas frameworks

AGRADEÇA AO AUTOR COMPARTILHE!

Olá pessoas! Quanto tempo!

Sem rodeios e direto ao assunto: estou trabalhando novamente com o meu velho (e não tão adorado) amigo PHP.

Depois de 7 meses em uma empresa de tecnologia focada em desenvolvimento Linux, com Python e Django, acabo por voltar ao mercado de desenvolvimento de websites (onde o PHP ainda reina por muito).

Embora esteja encarando alguns projetos em WordPress e Joomla!, grande parte dos desafios podem ser executados tranquilamente sem esses CMS. Porém, depois de uma extraordinária experiência com o Django, e uma agradável experiência com o Ruby on Rails, “PHP seco” nem pensar! Então resolvi escolher uma framework para me auxiliar.

Experimentei : Akelos, CakePHP, CodeIgniter e Zend Framework; e as minhas (rasas) conclusões você lê logo abaixo.

Framework pra quê?

Sejamos sinceros. Quem já usou uma framework na vida sabe muito bem como responder esta pergunta. Além do set de funcionalidades “ready to use“, temos os benefícios da organização, de algumas boas práticas de segurança (em alguns casos), de testes automatizados, etc. Hoje, não me vejo escrevendo um software do zero… seria um total desperdício de esforço e tempo.

Se você está meio cético quanto a isso tudo, eu lanço o desafio: Pergunte a qualquer usuário da jQuery se o mesmo deixaria de usá-la e voltaria a desenvolver suas soluções com Javascript puro.

Botando o PHP nos trilhos com Akelos

Logo AkelosA Akelos foi a primeira framework PHP que eu experimentei. Na época (cerca de 2 anos atrás) ela tinha sérios problemas com documentação e era um pouco “difícil de lidar”.

A premissa da Akelos é ser o Ruby on Rails do PHP. Inclusive, quem tem certa experiência com RoR vai notar várias similaridades entre ambas (na verdade é um verdadeiro “port” do RoR pro PHP). Cheguei a publicar um projeto em Akelos, e devo admitir que na época tive um pouco de dificuldade… talvez hoje ela esteja mais madura.

O que eu realmente gostei nela foi o esquema de “admin generator” semelhante ao do Django, seu poderoso esquema de scaffolding e a postura humilde dos desenvolvedores de indicarem outras frameworks na página oficial da framework.

Se você já desenvolve em Ruby (on Rails) e necessita passear pelo mundo do PHP, Akelos é uma boa pedida. Na minha opinião, se você não tem nenhuma ligação com Ruby, recomendo dar uma experimentada em outras frameworks.

Conheça a Akelos Framework.

Cozinhando aplicações em CakePHP

Logo CakePHPPosso considerar a CakePHP a minha framework “oficial” para PHP. Para começar a sua página oficial já chama a atenção pelo visual e pela disposição de conteúdo.

A premissa da CakePHP é “rapid development”. Já publiquei alguns projetos em Cake e devo admitir que ela lhe agrega uma produtividade excepcional sem criar complexidade desnecessária.

O que me chamou a atenção na Cake, em relação as outras frameworks que testei, foi o seu esquema de ORM. Agregado ao seu mecanismo de scaffolding, torna nossa vida muito mais simples em relação a construção de modelos de dados, formulários e consultas.

A documentação é muito boa, e existem vários componentes de terceiros que a fazem uma das escolhas mais certeiras para o seu ambiente de desenvolvimento em PHP.

Conheça a CakePHP Framework.

Injetando combustível com CodeIgniter

Codeigniter LogoAntes de mais nada, devo dizer que só utilizo “oficialmente” a CakePHP por causa do seu ORM. Caso contrário, sem dúvida nenhuma, seria usuário assíduo da CodeIgniter.

Ela é uma framework muito legal, pelo fato de ser mais abrangente que as duas citadas acima. Como assim “abrangente”? Explico: CodeIgniter faz menos coisas para você que a Akelos, Cake ou Zend.

Se você está pensando que isto é uma desvantagem, está enganado. A CI é uma framework extremamente simples de usar. Gostei muito e recomendo sem dó. Para aqueles projetos em que você quer ter total controle sobre tudo o que ocorre em cada região da sua aplicação… CI é uma excelente pedida.

A sua documentação é muito boa, e talvez seja um grande fator positivo para a escolha da ferramenta. Ela não é tão “rapid development” quanto a Cake, mas garante uma produtividade incrível e um prazer indescritível em programar em PHP.

Muito provável que eu volte a utilizá-la em outros projetos.

Conheça a CodeIgniter.

O poderio da famosa Zend Framework

Zend LogoO meu contato com a Zend Framework foi um tanto superficial, mas isso já me dá propriedade para dizer: de todas as citadas é a framework mais poderosa.

Para ser sincero não tenho motivos para não usar a Zend, acredito que a Cake seja mais simples e “rapid”, por isso da minha escolha. Mas conheço algumas agências Web que a adotaram como ferramenta de desenvolvimento seguindo a lógica: excelente documentação, excelente suporte, excelente participação da comunidade. Para se ter ideia, a Zend já possui livros escritos por autores brasileiros, fora a bibliografia estrangeira que também é muito boa.

Usei Zend (na verdade prestei suporte a um projeto existente) em um blog com bom número de visitas diárias, utilizando um banco Postgres. E talvez isso tenho refletido na minha escolha, pois o autor do código não sabia utilizar o esquema de ORM da Zend, fazendo com que instruções referente a consultas (que deveriam estar em modelos, seguindo o MVC) estavam nos controladores, o que deixava o código “macarrônico” demais para o meu gosto.

Mas é uma excelente ferramenta, possui um esquema de validadores muito bom, e embora pareça um pouco complexa de início, com a prática você acaba desmistificando e apaixonando-se por esta framework.

Conheça a Zend Framework.

Considerações finals

Não iria caber aqui uma análise técnica/detalhista de cada framework citada. Cada uma merece um post específico pois são ferramentas excelentes.

Minha intenção aqui não é dizer qual é a melhor, e sim transparecer de forma objetiva a minha experiência com cada uma… há muito do emocional nas palavras escritas, acredito que o programador deve levar o fator “afeição” em consideração, afinal passamos mais tempo com estas ferramentas do que com a nossa própria família ;)

Não importa qual seja a sua escolha, todas as citadas são ferramentas excepcionais e valem a pena serem conferidas.

E você? Tem alguma framework PHP para recomendar?

Até a próxima…

AGRADEÇA AO AUTOR COMPARTILHE!

Klaus Peter Laube

Mais artigos deste autor »

Tecnólogo em Análise e Desenvolvimento de Sistemas pelo Centro Universitário de Jaraguá do Sul (UNERJ). Desenvolvedor Web de longa data, apaixonado por Python e defensor dos padrões Web. Escreve quando pode no http://www.klauslaube.com.br.


18 Comentários

Fellipe Castro
4

CodeIgniter sem dúvidas! Além de ser a framework mais rápida, possui uma excelente documentação.

Leo Caseiro
6

Já que você gosta do CodeIgniter e não o utiliza por falta de ORM, procure estudar Kohana.

O Kohana é o CodeIgniter melhorado com funções do PHP5, ORM e etc.
Pelo pouco que sei, o CodeIgniter foi descontinuado e a Comunidade CI resolver re-estruturá-lo. Para quem conhece e gosta de CI, eu recomendo!

Ainda não publiquei nenhum projeto com ele. Utilizo bastante o ZF que no momento é o meu favorito.

Ótimas observações!
Abs

Cleiton Jr Mittmann
8

Olá Klaus, finalmente resolveu voltar a publicar seus artigos…

Estou trabalhando alguns meses com aplicações web para uso interno da empresa onde trabalho e posso dizer que uma boa framework faz a diferença…
Uso o Django em servidores FreeBSD e não tenho do que reclamar (pelo contrário).
Minha passagem pelo mundo PHP foi curta e, desculpem-me os admiradores, conturbada pelo Joomla. Mas como nunca sabemos o futuro (exceto por 2010..hehehe), conhecer essas frameworks pode ser interessante em um possível projeto PHP.

Esperamos mais artigos.

Maicon Pinto
9

kohana! Bom, como o Leo falou é um CI melhorado, e pelo que entendo bem melhorado!

Recomendo muito, tem uma documentação “boa” dá pra começar bem por ali, e existem algumas pessoas que escrevem sobre kohana, eu comecei a utilizar a pouco tempo, e estou procurando testar suas funcionalidades, assim que tiver pronto um projeto de teste posto meus comentários com uma expeirência maior….

Por enquanto a facilidade de entender o seu funcionamento é bem fácil, e pra quem já trabalhou com framework e tem conhecimento em MVC se torna Muito Fácil, e muito bom de trabalhar…

e parabéns pelo post, ficou bem bacana, e tomara que continue postando…

Alex Prado
10

Bom post, Klaus!
Seria bom, se vc souber, apontar alguns sites na web que estão publicados e utilizam estes frameworks!
Para quem quer ter uma visão mais voltada para o resultado final (meu caso), seria um complemento interessante.

Um abraço e até breve!

Jônatan Fróes
12

@ Leo Caseiro
O CodeIgniter não foi descontinuado não. Inclusive a versão 2.0 já está no forno.

O CI, por ser bastante simples, compatível com php4 e outros detalhes, acabou criando algumas limitações. Daí a galera criou o fork Kohana, que é um ótimo framework, mas não tem uma comunidade tão ativa como a do CI.

Agora se vc não usa o CI por falta de um ORM, conheça o DataMapper ou se preferir use CI junto com o poderoso Doctrine.

Emmanuel Costa
13

Excelente artigo, inclusive para dar uma luz sobre alguns aspectos agora seguindo na deixa dos comentarios de todos esses acho que o que tem o melhor acesso a dados ORM+DataMaper+ActiveRecord e uma performance fudida é o tal do PHPBURN ( http://www.phpburn.com ) eu uso há alguns meses e é bem interessante. O pessoal que mantém ta sempre atualizando e sempre tem coisas novas.

Usava o Doctrine antes mas a burocracia dele me irritava, com o PHPBurn é mais fácil essa camada de dados, no mais ele se parece muito com o CI no quesito views e controllers até a forma de chamada de views, rotas é muito similar, cheguei a achar que fosse um fork mas no source são coisas completamente diferentes.

Novamente muito bom o artigo, parabéns

Deixe seu comentário

Seu endereço de e-mail não será publicado. Campos com * são obrigatórios!

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">