Back-End

4 dez, 2015

PHP 7 chegou: será que os desenvolvedores PHP vão adotar a nova versão?

Publicidade

Agora que o PHP 7.0 está finalmente lançado, cabe aos usuários PHP decidir se e quando eles vão adotá-lo em seus projetos.

Leia este artigo para aprender sobre a história do PHP 7, os principais novos recursos desta versão, os resultados de uma pesquisa realizada nas últimas semanas para avaliar as intenções dos usuários de PHP em adotar o PHP 7, e o que esperar para o futuro do PHP.

A história do PHP 7

PHP 7 é o primeiro grande lançamento PHP desde a versão 5.0.0, que foi lançada em 2004, há mais de 11 anos.

Não é como se os core developers do PHP estivessem sem trabalhar todo esse tempo. PHP 6 tinha um ambicioso plano para trazer suporte transparente para strings Unicode ao PHP. No entanto, o seu desenvolvimento estagnou e PHP 6 foi cancelado em 2010.

Após esse período, PHP teve vários lançamentos com alguns novos recursos importantes, como namespaces no PHP 5.4, mas nada realmente grande que justificasse o lançamento de uma versão maior.

Ainda em 2010, o Facebook anunciou o compilador PHP HipHop. Ele foi um compilador que iria converter PHP em código C++, que então seria compilado em código de máquina nativo com um compilador C++. Apesar de o conceito ser ótimo e de ele ter trazido algumas melhorias de desempenho para PHP, não era muito prático, porque levaria muito tempo para compilar scripts PHP para código de máquina nativo.

Depois disso, o Facebook mudou para uma abordagem diferente. Eles criaram a HHVM (HipHop Virtual Machine), que compila o PHP em código de máquina nativo usando um engine JIT (Just In Time). Isso levaria muito menos tempo e ainda alcançou melhorias significativas de desempenho.

Mas, aparentemente, o Facebook não estava feliz com as features do PHP e, em 2014, lançou Hack, uma linguagem derivada do PHP que trouxe muitas características que faltavam no PHP, como mais rigor na checagem de tipos em todos os tipos de dados e suporte nativo de programação assíncrona.

Não muito tempo depois, Dmitry Stogov, da Zend, anunciou um projeto paralelo que estava um pouco em segredo para o desenvolvimento de PHP, que foi chamado de PHPNG.

Os principais novos recursos do PHP 7

Inicialmente, a ideia de PHPNG foi investigar a introdução de um engine JIT que iria trabalhar com a versão do Zend Engine baseada em PHP. No entanto, com mais investigação, ele percebeu que outras melhorias poderiam ser realizadas no código PHP para fazê-lo rodar muito mais rápido.

PHPNG se tornou a base da próxima versão PHP, que foi chamada PHP 7 para evitar confusão com o PHP 6, que teve seus planos originais cancelados.

Muitos outros recursos foram adicionados ao PHP 7, incluindo tipo estrito para valores escalares, classes anônimas, classes aninhadas, e a possibilidade de compilar a engine PHP e otimizar para aplicações específicas, como WordPress, usando Performance Guided Optimization (PGO).

PHP 7.0 foi originalmente concebido para ser lançado em outubro, mas como havia ainda alguns bugs, o lançamento foi adiado até dezembro.

Resultado de pesquisa: adoção do PHP 7

A versão 7 do PHP é definitivamente um dos eventos mais emocionantes no mundo do PHP nos últimos tempos devido a muitos dos recursos previstos.

Muitos desenvolvedores estão ansiosos para começar a usar o PHP 7, mas nem todos eles vão utilizá-lo imediatamente. Portanto, uma pesquisa foi criada para avaliar as intenções dos desenvolvedores PHP em adotar PHP 7.

Basicamente, eram três perguntas:

  1. Você usará o PHP 7 em produção?
  2. Você usará PHP 7 em seu ambiente de desenvolvimento?
  3. Qual é a versão mais recente do PHP que você está usando em produção?

526 desenvolvedores responderam à pesquisa, por isso os resultados devem refletir a realidade das opiniões de muitos desenvolvedores PHP.

1. Você usará o PHP 7 em produção?

01

Sim, eu já estou usando, desde a primeira versão estável do 7.0.0 21 4%
Sim, eu quero começar a usar quando a versão 7.0.0 for oficialmente liberada 104 19.8%
Sim, mas vou esperar algumas semanas ou meses após a versão 7.0.0 ser liberada 196 37.3%
Depende dos clientes para os quais eu trabalho 44 8.4%
Não, não usarei tão cedo. Eu preciso migrar um monte de código e isso vai me levar um longo tempo 58 11%
Não, não agora, eu só pretendo usá-lo para futuros novos projetos 64 12.2%
Não, somente se a minha empresa de hospedagem me obrigar a usá-lo e não fornecer uma versão mais antiga 20 3.8%
Outros 19 3.6%

 

2. Você usará PHP 7 em seu ambiente de desenvolvimento?

02

Sim, eu já tenho usado continuamente por um tempo 41 7.8%
Sim, eu usei algumas vezes para testar suas features 60 11.4%
Sim, mas quero começar a usar somente depois que a versão oficial 7.0.0 for liberada 218 41.4%
Sim, mas vou esperar algumas semanas ou meses até que eu tenha mais tempo para verificar a nova versão 112 21.3%
Depende dos clientes para os quais eu trabalho 11 2.1%
Não, não agora, eu só pretendo usá-lo para futuros novos projetos 62 11.8%
Não, somente se a minha empresa de hospedagem me obrigar a usá-lo e eu precisarei corrigir meu código 13 2.5%
Outros 9 1.7%

3. Qual é a versão mais recente do PHP que você está usando em produção?

03

PHP 7.0 10 1.9%
PHP 5.6 299 56.8%
PHP 5.5 111 21.1%
PHP 5.4 59 11.2%
PHP 5.3 38 7.2%
PHP 5.2 5 1%
PHP 5.1 0 0%
PHP 5.0 1 0.2%
PHP 4 0 0%
Outros 3 0.6%

 

Análise dos resultados da pesquisa sobre PHP 7

Desde a primeira questão da pesquisa, podemos ver que a maioria dos desenvolvedores não são early adopters. Eles querem usar PHP 7, mas preferem esperar um pouco até que ele esteja mais estável.

Embora houvesse 8 versões Release Candidate e a suíte de testes PHP que avalia se o PHP passa em todos os testes seja bastante extensa, os desenvolvedores sabem que haverá erros ou mudanças incompatíveis, e que vai levar algum tempo para que as eventuais correções no PHP ou na base de código dos desenvolvedores aconteçam.

Há também um número significativo de desenvolvedores que só vai querer usar o PHP 7 em novos projetos, provavelmente porque os projetos atuais são muito críticos e não podem ser afetados por mudanças que a nova versão pode causar.

A segunda questão era mais para entender quão curiosos os desenvolvedores estão sobre a versão 7. Os resultados revelaram que mais desenvolvedores estão interessados ​​em testá-lo no ambiente de desenvolvimento, porque é seguro.

Se alguma coisa quebrar o código, eles já terão uma ideia da quantidade de trabalho que terão que corrigir, especialmente se eles têm suas próprias suítes de testes de aplicativos prontas para ver se muitos testes falharão.

A terceira e última pergunta era para ver quão atualizadas estão as versões do PHP que os desenvolvedores estão usando.

Há uma pequena minoria que está bravamente já usando PHP 7 em produção. Nós não sabemos se eles estão usando para projetos críticos, mas eu acredito que é muito improvável.

Bem, a boa notícia é que a maioria dos desenvolvedores já estão usando PHP 5.6. No pior dos casos, existem desenvolvedores ainda usando PHP 5.3, provavelmente porque é o que a sua empresa de hospedagem oferece ou porque as versões mais recentes quebram seu código.

Mas PHP 5.3.11 deveria ser ao menos a versão mais antiga que todos deveriam usar, porque as mais anteriores a isso têm bugs sérios que podem travar o seu servidor.

Se você está curioso, dos 3 desenvolvedores que disseram que usam outras versões do PHP, apenas um realmente disse HHVM. Para usar HHVM, você precisa controlar seu ambiente de hospedagem e, provavelmente, compilá-lo manualmente. A grande maioria dos desenvolvedores de PHP não tem essa possibilidade ou a capacidade técnica para fazê-lo.

O futuro do PHP 7

Bem, agora que o PHP 7 está finalmente sendo lançado, você pode estar se perguntando qual será o próximo passo. Existem algumas características já previstas, mas sobre outras só podemos especular.

Alguns dos planos para novos recursos já foram discutidos no podcast Lately in PHP. Se você está curioso, não deixe de seguir os episódios do podcast ou inscrever-se no canal do YouTube para ser notificado sobre as discussões mais recentes das funcionalidades PHP.

PCO é o PDO para Criptografia

Uma coisa que nós já sabemos é que haverá uma extensão abstrata chamada PCO, que será como PDO, mas para a criptografia.

Análise de código PHP estático

Há também uma ferramenta que está sendo desenvolvida por Rasmus Lerdorf, chamado PHAN, que é um analisador de código PHP estático. A ideia é detectar possíveis erros apenas analisando o seu código PHP, sem ter de executá-lo. Ela tira proveito da nova extensão AST (Abstract Syntax Tree), que está sendo introduzida no PHP 7.

Programação assíncrona com Async e Await

Outra possibilidade é que o PHP oferece melhor suporte nativo para programação assíncrona usando os comandos async e await. Estas são palavras-chave que lhe permitem executar várias tarefas em paralelo no mesmo script, para que você não tenha que esperar por uma para executar a outra.

Não confunda a programação assíncrona com programação multi-threaded. Isso é algo que PHP já faz, usando a extensão pthreads.

A maior vantagem dos comandos async e await é que você já não tem que lidar com o callback. Isso significa que se você precisa esperar por alguma operação assíncrona, como acessar os servidores do sistema de arquivos, banco de dados ou servidores remotos, basta usar a palavra-chave await que o script irá continuar na próxima instrução quando a operação assíncrona for concluída.

As palavras-chave async e await exigem algumas mudanças não-triviais no PHP porque ele vai precisar lidar com loops de eventos internos. No entanto, os desenvolvedores do core do PHP já começaram a discutir a possibilidade de implementar o async e comandos de palavras-chave, porque eles precisam reservar essas palavras-chave antes que outros desenvolvedores comecem a usá-las.

Além disso a linguagem Hack, do Facebook, também suporta async e await. Eu suspeito que os desenvolvedores do Facebook podem ajudar os desenvolvedores do core do PHP no trabalho de trazer async e await para PHP.

Você pode se perguntar se ter esses comandos em PHP é realmente importante. Sim, mas você precisa entender as vantagens.

Muitos desenvolvedores mudaram para Node.JS por causa de seu suporte para programação assíncrona. Node.JS ainda não suporta as palavras-chave async e await, mas é apenas uma questão de tempo, porque essa é uma das características de EcmaScript 7, que será a base de futuras versões de JavaScript que serão usadas no Node.js.

Trabalhos como esse podem ser considerados ainda mais importantes, especialmente após o recente anúncio de que o WordPress vai migrar o máximo possível para JavaScript, incluindo Node.js e React no lado do servidor.

Aparentemente, esse foi um passo que eles fizeram para fazer um uso mais eficiente de seu servidor que hospeda blogs WordPress.com. Nós ainda não sabemos se a comunidade WordPress vai abraçar esse projeto porque há milhares de plugins que dependem de PHP.

Web Server independente

PHP já vem com um servidor web independente, mas não é realmente recomendado para ambientes de produção.

Uma vez que o PHP venha com suporte nativo para programação assíncrona, será mais fácil desenvolver servidores HTTP mesmo escritos em PHP puro como você pode fazer com Node.js.

Isso pode tornar PHP mais flexível em termos de recursos e mais eficiente em termos de tratamento de requisições paralelas com menos memória, especialmente quando se combina a programação assíncrona com programação multi-threaded com base em pthreads.

Conclusão

PHP 7 foi definitivamente um grande salto gigante para a linguagem. No entanto, o mundo continua girando e PHP deve seguir as novas tendências, como algumas que mencionamos acima.

Ainda assim, todos nós devemos comemorar e parabenizar os desenvolvedores que deram o seu tempo e habilidade para fazer PHP muito melhor como PHP 7 é agora.

Se você gostou deste artigo, ou se quiser fazer uma pergunta sobre as funcionalidades do PHP 7 e a expectativa de adoção, deixe o seu comentário.

***

Manuel Lemos faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: http://www.phpclasses.org/blog/post/333-PHP-7-Release-Date-Arrived-Will-Developers-Adopt-PHP-7.html