Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RSS iMasters

[Resolvido] A nova era de frameworks PHP

Recommended Posts

Textooriginal em inglês, de Juozas ?Joe?Kaziuk?nas, disponível em http://blog.webspecies.co.uk/2011-05-23/the-new-era-of-php-frameworks.html

 

?

 

Eu já trabalhei em muitos sistemas eprojetos diferentes, e a maioria deles foi em PHP. No entanto, somenterecentemente eu notei um grande momento - uma nova era de frameworks PHP.Parece que tudo está mudando nos dias de hoje. Eu gostaria de discutir o quepenso sobre o estado atual, o que há de errado com ele e como a nova gangue deframeworks irá mudá-lo.

 

No dia 21 de maio, eu palestrei naconferência alemã de PHP (DPC) sobre esse tópico e eu tinha várias discussõesinteressantes sobre ele. Para começo de conversa, aqui estão os slides da palestra,e, claro, mantenha em menteque eles não funcionam muito bem sem eu falando. Este artigo é uma breve versãodo que eu pontuei.

 

 

Nascem os frameworks

37608.png

 

Seis anos atrás, o CakePHP, um dos primeiros frameworks PHP, foi lançado e a partir de então vimos uma pletora de frameworks PHP. Atualmente temos... milhões deles, todos com seus MVC,DBAL e implementações de templates diferentes. Eu gosto deles, mesmo sendoum pouco estranhos, mas sua adoção ainda não é massiva.

 

Se você olhar para vários projetos open-souce de PHP baseados em frameworks,verá que existem poucos deles. O que é triste. A razão parcial para isso éque muitos desses projetos foram lançados antes de qualquer framework PHPsequer existir, mas também devido ao fato de que fazer qualquer trabalho com um framework PHP dependia de um bom aprendizado. Assim, se um projeto fossebaseado em um framework, ele iria aumentar a curva de aprendizado, pelo menosna maioria dos casos.

 

No entanto, eles mudaram a maneira com que fazemosPHP. Muitos dos desenvolvedores afirmavam que sabiam OOP, mas, quando vieramos frameworks, eles foram forçados a provar que realmente sabiam (antesque você pudesse hackear da maneira que você quisesse). E os frameworksensinaram a milhões de desenvolvedores o que realmente é o OOP e como elefunciona. Peça a alguém para usar o mysql_query hoje em dia e você pode levarum soco na cara. Duas vezes. Porque eles também precisariam usarmysql_real_escape_string.

 

 

Como era feito?

Ninguém sabia de fato como os frameworks PHPdeveriam ser. Nem que recursos eles deveriam ter. Então como as pessoasconseguiram fazê-los  acontecer? Bem, ou elas seguiram os frameworksexistentes em outras linguagens (como Ror), ou tiveram suas próprias ideias.Como elas não tinham experiência, a maioria dos frameworks até hoje tem designsque todo mundo sabe que são ruins, mas impossíveis de serem"consertados".

 

A abordagem programática dos desenvolvedores PHPaqui ajudou muito - da mesma maneira que a linguagem PHP evoluiu, os frameworks PHP também mudaram e cresceram a partir de feedbacks ede pedidos. Em dois anos, a maioria das pessoas estava feliz com o que tínhamos.Mas se você olhasse mais de perto, em 2007 tínhamos o Zend Framework 1.0, quetinha, comparado com o 1.11, um conjunto de recursos muito limitado. Então,mesmo hoje, os frameworks estão evoluindo rapidamente para encontrar asnecessidades dos recursos.

 

O PHP 4 foi (e surpreendentemente ainda é, segundoalguns deles) suportado por todos os  frameworks. Isso levou a um monte decódigo que hoje é ultrapassado, especialmente os paradigmas OOP. Tentarsuportar isso gerou processos complicados de implementações de novos recursos e de correção de bugs. Além disso, menos e menos desenvolvedores querem trabalhar emcódigos antigos.

 

 

O que está quebrado?

37609.png

 

Antes de tudo, antigamente era bastante popular usaras funções mágicas do PHP (__get, __call etc.). Não há nada de errado com elas,em um primeiro instante, mas elas são realmente perigosas. Elas deixam as APIsobscuras, o auto-completar é impossível e, maisimportante ainda, elas são lentas. O uso delas seria para hackear o PHP parafazer coisas que ele não queria fazer. Mas fazia com que coisas ruinsacontecessem.

 

SCOP, Static class oriented programming (programação orientada a classes estáticas, em tradução livre), é um termoque eu inventei para descrever a maioria dos códigos PHP. Métodos estáticos sãoruins por vários motivos sobre os quais não vou discorrer hoje, mas o maisimportante é que se uma classe representar a coleção de métodos estáticos, ela nãochega nem perto do OOP. Está apenas utilizando uma classe como um containerpara funções. Existem frameworks completos apenas fazendo isso.

 

Zend Framework, por muito tempo, foi meu frameworkPHP favorito (e ainda é, para o PHP 5.2), mas meu maior problema com ele é queele tenta forçadamente ser o componente de uma biblioteca. Outros frameworksseguiram o mesmo caminho - em vez de utilizarem bibliotecas existentes, elesescreveram a sua própria. Isso criou tantas bibliotecas dentro do PHP que sãodo tipo autônomas, mas ainda precisam que você faça o download do framework completo. Frameworks gordos são realmente irritantes.

 

 

A nova era em 2011

Para melhorar essa situação, as pessoas escolheramfazer algumas coisas. Mas, principalmente, resolveram reescrever os frameworksdo zero no topo do PHP 5.3. Isso permite que novos padrões sejam estabelecidos,interfaces que se comunicam entre todos os frameworks e que os problemas de herança(a maioria deles) sejam jogados fora. Parece fácil, mas somente fazendoisso conseguiremos entrar na nova era de frameworks.

 

Eu não usei nenhum framework antes de o CakePHPnascer, então vou utilizá-lo como ponto de partida. Na verdade, eu até duvidoque existiu alguma coisa antes do CakePHP, e é claro que você não chama oDrupal de  framework. Dos anos do CakePHP até hoje, seis anos se passaram,que marcam a primeira era. 2011 marca a segunda, e coisas completamente novasirão finalmente acontecer, principalmente em forma de lançamentos e anúncios.

 

Interessantemente, em 2011, o PHP não é mais PHP. Ounão mais apenas PHP. O conjunto LAMP é chato e cada vez menos utilizado, tendonovas ferramentas como Nginx e CouchDB disponíveis. A integração einteroperabilidade de hoje são elementos cruciais. O mesmo vale para linguagem- o PHP 5.3 é um monstro completamente novo que possibilita uma funcionalidadeincrível e, se você utilizar o PHP 5.3, não existe nenhum problema decompatibilidade real com versões anteriores.

 

 

Vamos consertá-los?

37610.png

 

Migrar para o GIT permitiuque muitos frameworks facilitassem a contribuição. Fico mais impressionadocom os resultados do Symfony, porque eles conseguiram atrair um imenso númerode contribuidores (veja o gráfico aqui).O passo atual é muito mais rápido, comparado com alguns anos atrás: osframeworks estão evoluindo muito mais rapidamente.

 

Muitoscortes foram feitos. Primeiramente, toda aquela mágica que mencionei antesagora já era, e definições explícitas estão sendo utilizadas em todo lugar.Além disso, existe mais pensamento no sentido de se ter um núcleo pequeno e recursosadicionais vindos através de extensões e de bibliotecas. Essa é uma ótima maneirade trabalhar com frameworks e de reduzir a quantidade de memória necessária.

 

Performancefoi o maior problema para os frameworks PHP, e a maioria deles tinhaplanos para novos lançamentos. O front-end recebeu muita atenção também, comframeworks como Symfony ajudando com o gerenciamento de ativos(JavaScript e CSS) e headers corretos para conteúdo estático. O PHP lucrou coma redução da mágica e a limpeza do código, e o PHP 5.3 teve uma grande melhoriaem performance.

 

 

Novos recursos

Éóbvio que todos os novos recursos da linguagem estão incorporados. Comonamespaces, por exemplo. Namespaces respondem à necessidade de pesquisa econcordam em uma abordagem de autoloading que iria funcionar para a maioria dosframeworks. O PSR-0nasceu mais cedo, mas agora é bem integrado dentro dos frameworks. E as funçõesanônimas estão encontrando sem caminho também.

 

Dependency injection containers eAnnotationssão duas das que gostaria de citar aqui. Gosto de usá-las, e o Symfony fazum ótimo uso delas, mas outros frameworks estão chegando perto e vão começar aincorporá-las logo. A combinação delas com novos recursos do PHP permite acriação de micro-frameworks bastante limpos, veja o Silex.

 

Nãoestou completamente convencido de que gosto da crescente lista de recursosdiretamente portados do ambiente Java. O Java trabalha diferente (e necessitade 1GB de RAM), então até o DiC é complicado no PHP. Veremos aonde ele nos leva,mas até agora eu estou um pouco preocupado, pois sei que o PHP gosta desistemas leves ao invés de gráficos complexos de objetos. Por mais legal queesses modelos possam parecer, eles podem criar mais do que resolver problemas.

 

 

Então quando?

37611.png

 

Zend Framework 2.0está a caminho, mas irá demorar um pouco. Como o SF tem um código base massivo,a primeira coisa que eles fizeram foi converter tudo para um código namespaced.Uma vez que isso foi feito, era hora de começar a reconstruir a funcionalidadee a implementá-la. Atualmente, o trabalho está sendo feito na parte MVC, mas euespero que no final do ano um lançamento definitivo seja feito.

 

Lithiumestá quase lá, está no modo dev, mas parece bem perto de ser terminado. É umframework completamente diferente dos regulares, então vale a pena dar uma olhadanele. Estou mais impressionado com sua implementação AOP egostaria de vê-lo adotado em mais frameworks. Obviamente eles são somente paraPHP 5.3, mas ele suportam o CouchDB e o MongoDB muito bem.

 

Symfony2, na minha opinião é olíder do grupo. Eles já estão em beta2 e o lançamento final é uma questão demeses. A lista de recursos é difícil de compreender, então vale a pena dar umaolhada no site deles, mas para falar de uma delas - Bundless. Bundless é umamaneira de ter uma estrutura extensível da aplicação com uma coleção decomponentes de fora. Pense em plugins.

 

 

Conclusão

Estousuper animado com as coisas que estão acontecendo na indústria PHP e acreditoque elas irão gerar grandes conquistas. Finalmente, temos uma era em que podemosjogar fora todo o nosso legado (a maioria) e implementar novas ideias. Vá parafrente 5 anos a partir de hoje, e iremos estar tão animados como estamos hoje.

 

?

 

 

artigo original publicado em LINK,sob a licença CC-BY-3.0 http://creativecommons.org/licenses/by/3.0/

 

 

 

http://imasters.com.br/artigo/21215/php/a-nova-era-de-frameworks-php

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.