Como anda o PHP moderno?

03/03/2020 0 Comments

Post retirado da resposta do Marcelo dos Santos:

Galera, achei o episódio sobre PHP Moderno excelente. Os convidados também foram escolhidos a dedo. São excelentes profissionais, fazem muito pela comunidade e tenho a honra de ser amigo de todos eles. Só acho que faltou escolher alguém de Laravel para balancear essa discussão aí. 😛

O debate foi rico e cheio de informações, mas vou dar o meu pitaco para ajudar a enriquecer ainda mais esse ótimo episódio.

Sobre o Composer, hoje ele é o padrão de fato para gerenciamento de dependências no mundo PHP. Ele é uma ferramenta robusta que, por volta de 2012, começou a mudar o mundo de PHP. Ele gerencia as dependências por projeto ou de forma global e se baseia em um arquivo de manifesto chamado `composer.json` que guarda todas as informações do projeto, dependências, scripts e hooks de instalação. O Composer só foi possível graças às PSR-0 e PSR-4 que são padrões que dizem como uma dependência deve ser organizada internamente para ser carregada de forma automática. Todas as bibliotecas e frameworks disponíveis no mundo PHP podem ser encontradas no site Packagist (https://packagist.org).

Antes do Composer existiu o PEAR (https://pear.php.net) que é um gerenciador de dependências mais antigo e que não era tão utilizado pela comunidade. O PEAR instalava as dependências de forma global e, quase sempre, ocasionava conflito entre versões das bibliotecas. E o PECL (https://pecl.php.net) é um gerenciador de extensões. As extensões são bibliotecas de mais baixo nível instaladas diretamente no sistema operacional e que são normalmente escritas em C e estendem funcionalidades de bibliotecas do sistemas operacional ou fornecidas pela linguagem PHP.

O FIG ou PHP Framework Interop Group (https://www.php-fig.org) é um consórcio de desenvolvedores dos maiores frameworks para pensar em padrões que tornem as bibliotecas do mundo PHP interoperáveis, ou seja, padronizadas. Além disso elas definem padrões de estilo de código (PSR-2 e PSR-12), padrões de interface para logs (PSR-3), padrões de interface para objetos de requisição e resposta HTTP (PSR-7) e inúmeros outros padrões. A criação das PSRs foi outra iniciativa que revolucionou o mundo PHP.

Apesar de o PHP ser orientado a objetos desde a versão 5.0, lançada em 2004, ela só se tornou mais utilizada a partir da versão 5.3, lançada em 2009. Ou seja, há pelo menos 10 anos o PHP é orientado a objetos de forma robusta e a sua utilização é fortemente recomendada. Contudo, existem sistemas mais antigos que ainda utilizam código procedural e necessitam de migração para código orientado a objetos para poder usufruir dos benefícios do ecossistema atual que é bem completo e robusto. Já há bastante tempo é recomendado que os softwares em PHP sejam escritos utilizando orientação a objetos e acredito que a maioria da comunidade já o faz. Existe um livro chamado ‘Modernizing Legacy Applications In PHP’ (https://www.leanpub.com/mlaphp ) escrito pelo Paul M. Jones que auxilia na migração de códigos legados para uma abordagem mais moderna.

Vale lembrar que a comunidade PHP é bem madura e aborda inúmeros assuntos como design de código, arquitetura de software e domain-driven design há algum tempo e, hoje em dia, fala-se muito sobre programação assíncrona, serverless e microsserviços. Aliás, grandes nomes mundiais sobre design OO e domain-driven design vieram do mundo PHP como o Matthias Noback (https://www.twitter.com/mat… ), escritor conhecido sobre design OO, e o Mathias Verraes (https://www.twitter.com/mat… ), organizador do DDD Europe.

A comunidade mantem-se atualizada em relação a cultura devops também. Um dos nomes mais conhecidos sobre o assunto no Brasil, o Wellington Silva (https://www.twitter.com/_ws… ), escritor, organizador do meetup de Docker em São Paulo e do DevOpsDays São Paulo e palestrante da DockerCon é da comunidade PHP e fez sua primeira palestra sobre o assunto no meetup de Laravel. 😛 O Renato Mefi (https://www.twitter.com/ren… ) que falou com vocês sobre microsserviços, Kafka e contribuidor do Debezium é da comunidade PHP também.

Em relação a frameworks é outra área onde o PHP brilha. Tem para todos os gostos e níveis. Porém, sempre acaba rolando muita “treta” como a que rolou no episódio. Eu, pessoalmente, sou apaixonado pelo Laravel e gosto muito do Symfony. Acho que os entrevistados foram muito opinionados e até injustos com o Laravel. A filosofia do Laravel é a mesma do Rails, um framework opinionado, focado em convenção e que, quer queiram quer não, ajudou o PHP evoluir a força dos códigos legados feitos em CodeIgniter, forçar o PHP 7 como requisito e introduzir conceitos mais bem elaborados como arquitetura e testes para uma comunidade que não estava acostumada. Outra coisa, as chamadas estáticas do Laravel são apenas açúcar sintático e não classes estáticas por si só. Por baixo dos panos é tudo (ou quase ;P) modular e testado. E o Laravel não é só utilizado para POC (prova de conceito), ele é utilizado por aplicações em larga escala como o e-commerce da Leroy Merlin Brasil. O projeto virou até case para a matriz na França. Vale falar que o Laravel é o framework back-end de mais sucesso no GitHub ultrapassando o Rails e o Meteor há algum tempo atrás. Até o próprio criador do Symfony se rendeu e disse uma vez que o seu maior “erro” foi não ter criado o Laravel. E, sim, o Laravel utiliza por baixo dos panos componentes Symfony e fornece uma developer experience ímpar, o que resultou no sucesso que ele é. E isso só foi possível porque o Laravel é apoiado sobre ombros de gigantes (componentes de Symfony). A questão é utilizar o framework que mais se adequa ao problema a ser resolvido e que a sua equipe tenha mais prática. Pode ser Laravel, Symfony ou Zend. São todos excelentes frameworks e muito utilizados no mundo PHP.

Sobre a polêmica de ser bom ou não se parecer com Java que o Maurício Linhares levantou, penso que o PHP é uma linguagem extremamente flexível que acolhe bem desde iniciantes em programação com a sua facilidade de uso até programadores(as) mais experientes. Se quiser utilizar ou não tipagem estrita, é só habilitar uma flag. Quer utilizar um framework menos burocrático, vai de Laravel. Quer ter outros tipos de garantia, vai de Symfony.

As novas funcionalidades da próxima versão PHP 7.4 são bem animadoras. São várias novidades como propriedades tipadas, arrow functions, spread operator em arrays, literal number separator, operador de atribuição null coalesce, FFI (foreign function interface), preloading entre outras. Eu estou muito animado com elas que até escrevi um artigo sobre o assunto. Para mais detalhes sobre as novidades do PHP 7.4 recomendo que leiam o artigo ‘O que há de novo no PHP 7.4?’ (https://www.pensandonaweb.c… ) de minha autoria.

E, por fim, recomendo a todos(as) que participem de comunidades de desenvolvimento de software e de eventos no seu estado ou cidade. Eu sou de São Paulo e aqui tem o PHPSP que faz um excelente trabalho fomentando meetup, eventos e outras iniciativas.

Os próximos eventos de PHP que acontecerão ao redor do Brasil são:

* PHPMG Conference 2019 (21/09 em Belo Horizonte) – https://conf.phpmg.com/
* PHP Community Summit 2019 (26 e 27/09 em São Paulo) – https://php.locaweb.com.br/
* PHPeste 2019 (19 e 20/10 em Recife) – https://phpeste.net/
* PHP Conference Brasil (5, 6 e 7/12 em Porto Alegre) – https://phpconference.com.br/

Algumas ótimas comunidades para você participar!

* Meetup PHPSP – https://www.meetup.com/pt-B…
* Slack PHPSP – http://bit.ly/vemproslackphpsp
* Meetup Laravel-SP – https://meetup.com/laravel-sp
* Symfony Brasil no Telegram – https://telegram.me/Symfony…
* PHP Brasil no Telegram – https://telegram.me/phpbrasil

As referências que citei no decorrer da minha resposta são:

* Composer – Dependency Manager for PHP – https://getcomposer.org
* PEAR – PHP Extension and Application Repository – https://pear.php.net
* PECL is a repository for PHP Extensions – https://pecl.php.net
* Packagist – The PHP Package Repository – https://packagist.org
* PHP-FIG – PHP Framework Interop Group – https://www.php-fig.org
* Modernizing Legacy Applications In PHP – https://leanpub.com/mlaphp
* Matthias Noback – https://twitter.com/matthia…
* Mathias Verraes – https://twitter.com/mathias…
* Wellington Silva – https://twitter.com/_wsilva
* Renato Mefi – https://twitter.com/renatomefi
* O que há de novo no PHP 7.4? – https://pensandonaweb.com.b…
* PHP in 2019 – https://stitcher.io/blog/ph…
* Thread sobre PHP Moderno –

Marcel dos Santos@marcelgsantos · 25 de jul de 2019Respondendo a @marcelgsantos @nelson_senna

A linguagem é uma das que tem a menor curva de aprendizado. Ela é receptiva para novatos(as), mas possui estruturas necessárias para desenvolvedores(as) mais experientes. Ela possui uma biblioteca padrão super completa e, para alternativas, existem bibliotecas externas.

Marcel dos Santos@marcelgsantos

Em PHP fala-se de OOP com profundidade, design OO, padrões de projetos, MVC, arquitetura hexagonal, CQRS/ES, DDD e inúmeros outros conceitos avançados. Fala-se sobre serverless, sobre microsserviços, sobre CMS, sobre e-commerce, sobre otimização do core e avanços da linguagem.715:45 – 25 de jul de 2019

Referências:


Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.