PHP 2019: Melhor do que você pensa sobre isso



Lembre-se do post outrora popular: “ PHP: um fractal de mau design ”? Quando o li pela primeira vez, trabalhei em um lugar estúpido com muitos projetos PHP desatualizados. Ela me fez pensar se eu deveria sair e fazer algo completamente diferente da programação.

Felizmente para mim, logo pude mudar meu local de trabalho e, mais importante, o PHP foi capaz de evoluir "levemente" a partir das versões 5. *. E hoje, através deste artigo, quero apelar para pessoas que não mais programam em PHP ou estão presas em projetos legados.

Spoiler: Hoje, o PHP, como quase todas as linguagens de programação, está cheio de falhas. Muitas funções básicas ainda possuem assinaturas inconsistentes, as definições de configuração são confusas, ainda há muitos desenvolvedores escrevendo códigos de merda, porque no projeto atual eles não funcionam de maneira diferente ou porque não sabem o contrário.

Hoje, quero dar uma olhada no lado positivo: vamos nos concentrar no que mudou e em como escrever um código PHP limpo e mantido. Quero pedir que você abandone o preconceito por alguns minutos.

Depois disso, você pode pensar no PHP exatamente como antes. Embora, provavelmente, você ficará surpreso com algumas das melhorias feitas no PHP nos últimos anos.

TL DR


  • PHP é desenvolvido ativamente, uma nova versão é lançada a cada ano
  • O desempenho da era do PHP 5 dobra, se não triplicar
  • Existe um ecossistema extremamente ativo de estruturas e bibliotecas
  • Nos últimos anos, muitos novos recursos foram adicionados ao PHP, e a linguagem continua a evoluir.
  • Ferramentas como analisadores estáticos evoluíram muito nos últimos anos e continuam a evoluir ainda mais.

Breve histórico


Uma breve olhada no ciclo de lançamento do PHP. A versão atual é PHP 7.3 e a versão 7.4 é esperada para o final de 2019. O PHP 8.0 será a próxima versão após a 7.4. Começando no final da era do PHP 5. *, a equipe de mantenedores tem tentado manter um ciclo de lançamento anual e tem se saído muito bem nos últimos quatro anos.

Em geral, cada nova versão é ativamente suportada por dois anos e recebe mais um ano de "correções de segurança". O objetivo é motivar os desenvolvedores de PHP a manter a versão atualizada: aplicar pequenas atualizações todos os anos é muito mais fácil do que, por exemplo, alternar da versão 5.4 para a 7.0.

Um calendário atualizado de datas de suporte para diferentes versões do PHP pode ser encontrado aqui .

Finalmente, o PHP 5.6 foi o último lançamento do ramo 5. * e o 7.0 foi o próximo. Se você quiser saber o que aconteceu com o PHP 6, pode ouvir o podcast PHP Roundtable.

Agora vamos desmascarar alguns equívocos comuns sobre o PHP moderno.

Desempenho PHP


Nos dias da versão 5. * O desempenho do PHP era ... na média, na melhor das hipóteses. No entanto, na versão 7.0, partes significativas do núcleo do PHP foram reescritas do zero, resultando em um aumento de desempenho de duas a três vezes.

Mas palavras não são suficientes. Vamos dar uma olhada nos testes. Felizmente, outras pessoas gastaram muito tempo comparando o desempenho do PHP. Eu acredito que Kinsta tem uma boa lista atualizada.

A partir da versão 7.0, o desempenho está aumentando apenas. Tanto é assim que os aplicativos da web PHP têm desempenho comparável e, em alguns casos, melhor do que as estruturas da web em outros idiomas. Dê uma olhada nesta extensa suíte de testes.

Obviamente, as estruturas PHP não superam o C e o Rust, mas são muito melhores que o Rails ou o Django e comparáveis ​​ao ExpressJS.

Estrutura e ecossistema


Falando de estruturas: o PHP não se limita mais ao WordPress. Posso dizer-lhe como desenvolvedor PHP profissional: o WordPress não é de forma alguma um representante do ecossistema moderno.

Em geral, existem duas estruturas principais de aplicativos da web: Symfony e Laravel . E alguns mais pequenos: Zend, Yii, Cake, CodeIgniter, etc. Mas se você quiser saber como é o desenvolvimento moderno do PHP, uma boa opção seria conhecer um dos dois maiores.

Ambas as estruturas (Symfony e Laravel) possuem um grande ecossistema de pacotes e produtos. Dos painéis administrativos e CRM aos pacotes autônomos (no original - “pacotes autônomos”), do CI aos criadores de perfil, além de vários serviços, como servidores de soquete da web, gerenciadores de filas, integração de pagamentos; francamente, demais para listar tudo.

No entanto, essas estruturas destinam-se ao desenvolvimento direto. Se você só precisa gerenciar seu conteúdo, plataformas como WordPress e CraftCMS estão melhorando.

Uma maneira de medir o estado atual do ecossistema PHP é examinar o packagist, o principal repositório de pacotes do PHP. Está crescendo exponencialmente. Com ~ 25 milhões de downloads por dia, podemos dizer com razão que o ecossistema PHP não é mais a fraqueza que costumava ser.

Dê uma olhada neste gráfico, que mostra o número de pacotes e versões ao longo do tempo. Também pode ser encontrado no site da embalagem .



Além das estruturas de aplicativos e do CMS, nos últimos anos também vimos um aumento nas estruturas assíncronas.

Essas estruturas e servidores, escritos em PHP ou outras linguagens, permitem o uso de PHP verdadeiramente assíncrono. Exemplos incluem Swoole , Amp e ReactPHP .

Desde que entramos no mundo assíncrono, coisas como soquetes da Web e aplicativos com muitas operações de E / S tornaram-se realmente relevantes no mundo do PHP.

A lista de discussão interna - um local onde os principais desenvolvedores discutem o desenvolvimento da linguagem - também falou sobre adicionar o libuv ao kernel. Para quem não conhece o libuv, é a mesma biblioteca que o Node.js usa para garantir toda a sua assincronia.

Língua em si


Embora assíncrono e aguardar ainda não estejam disponíveis, nos últimos anos muitas melhorias foram feitas no próprio idioma. Aqui está uma lista incompleta de novos recursos no PHP:

  • Funções de seta
  • Operador de união com nulo
  • Traits
  • Propriedades digitadas
  • Desempacotar operador
  • Compilador Jit
  • Interface de função externa
  • Classes anônimas
  • Declaração de tipo de retorno
  • Criptografia moderna
  • Geradores
  • Muito mais

Enquanto falamos sobre os recursos da linguagem, vamos também tocar no tópico de como a linguagem está se desenvolvendo hoje. Há uma equipe de mantenedores voluntários que avançam o idioma, enquanto a comunidade também pode oferecer RFCs.

Esses RFCs são discutidos na lista de discussão interna, que também pode ser lida na Internet. Antes de um novo recurso de idioma ser adicionado, é necessário fazer uma votação. Somente RFCs com maioria de votos, pelo menos ⅔ de todos os eleitores, podem ser incluídos no núcleo.

Cerca de 100 pessoas participam da votação e não há necessidade de votar em cada RFC. O grupo de pessoas que tem a oportunidade de votar, é claro, inclui os mantenedores, porque eles devem manter uma base de código. Além deles, há um grupo cujos membros foram selecionados individualmente na comunidade PHP. Este grupo consiste em mantenedores da documentação do PHP, autores de grandes projetos PHP e desenvolvedores de destaque da comunidade PHP.

Embora a maior parte do desenvolvimento seja voluntária, um dos principais desenvolvedores de PHP, Nikita Popov, foi recentemente contratado pela JetBrains para trabalhar na linguagem em tempo integral. Outro exemplo é a Linux Foundation, que recentemente decidiu investir no Zend Framework. Esse trabalho e aquisições garantem estabilidade para o futuro do PHP e seu desenvolvimento.

Toolkit


Além do núcleo em si, nos últimos anos, vimos um aumento nas ferramentas ao seu redor. Analisadores estáticos de salmos , como os criados por Vimeo, Phan e PHPStan, vêm à mente .

Essas ferramentas analisam estaticamente seu código PHP e relatam erros típicos, possíveis erros, etc. Em certo sentido, a funcionalidade que eles fornecem pode ser comparada ao TypeScript (nota do tradutor: analisadores estáticos expandem a capacidade da linguagem de procurar erros / defeitos, desse modo melhorando a linguagem, o TS faz condicionalmente a mesma coisa em cima do JS) , embora no momento a linguagem PHP não seja transpilável, portanto, a sintaxe personalizada não é permitida.

Embora ainda tenhamos que confiar em dockocks e digitação, Rasmus Lerdorf, o criador do PHP, mencionou a ideia de adicionar um mecanismo de análise estática ao kernel. Essa tarefa contém muito potencial, mas é enorme em termos de custos de mão-de-obra.

Falando em transposição, vale ressaltar que houve tentativas de expandir a sintaxe do PHP não no nível do kernel, mas no nível das bibliotecas de usuários, conforme implementado no JavaScript. Um projeto chamado Pre faz exatamente isso: permite que você use a nova sintaxe PHP que envolve o código PHP comum.

Embora essa abordagem tenha se comprovado no mundo do JavaScript, ela só pode ganhar dinheiro com PHP se o suporte adequado for fornecido para IDE e análises estáticas. Essa é uma ideia muito interessante, mas ainda há um longo caminho a percorrer antes que possa ser chamada de mainstream.

Em conclusão


Apesar de tudo isso, sinta-se à vontade para pensar no PHP como uma linguagem terrível. Ele definitivamente tem suas falhas e uma herança de 20 anos, mas posso dizer com confiança que gosto de trabalhar com ele.

Com ele, posso criar software confiável, bem conservado e de alta qualidade. Os clientes para quem trabalho estão satisfeitos com o resultado final, assim como eu.

Apesar de você ainda poder escrever código muito ruim ao trabalhar com PHP, eu diria que essa é uma ótima opção para desenvolvimento web, se usado corretamente.

Você discorda? Escreva nos comentários o porquê!

Source: https://habr.com/ru/post/pt456024/


All Articles