Guia prático do Modern PHP: desenvolvimento e ecossistema


Para a maioria de nós, desenvolvedores PHP, escrever aplicações hoje em dia em comparação com dez ou mais anos atrás é um esforço muito diferente. Naquela época, muitos de nós éramos designers de web, responsáveis não só pelo desenvolvimento backend, mas também pela administração do sistema, programação para o frontend ou até por projetar e desenvolver a interface para sites, blogs, lojas virtuais, etc.

Isso mudou nos últimos anos, temos projetos open source de CMS que facilitam a criação e o gerenciamento destas aplicações, como sites institucionais, blogs e comércio eletrônico. Assim, os desenvolvedores web mudaram e começaram a se especializar e a concentrar-se no que não pode ser automatizado tão facilmente. Junto com isso veio uma nova mentalidade sobre como o desenvolvimento deve ser feito e quais ferramentas devem ser usadas.

No último Conexão KingHost apresentamos, Ari Stopassola Junior e eu, o Painel Modern PHP, que falou sobre como é atualmente o desenvolvimento utilizando a linguagem PHP e seu ecossistema, neste painel falamos sobre alguns tópicos como padrões, componentes, integração contínua, deployment, testes, ferramentas de desenvolvimento, frameworks, ORM e novidades do PHP7.

A seguir vamos ver um pouco da evolução do PHP e alguns destes tópicos, que são muito importantes para o dia a dia dos desenvolvedores.

O começo: história do PHP

O PHP, como é conhecido hoje, é na verdade o sucessor para um produto chamado PHP/FI. Criado em 1994 por Rasmus Lerdof, a primeira encarnação do PHP foi um simples conjunto de binários Common Gateway Interface (CGI) escrito em linguagem de programação C.

Em Junho de 1995, Rasmus liberou o código fonte do PHP para o público, o que permitiu que desenvolvedores o utilizassem da forma como desejassem. Isso permitiu e encorajou usuários a fornecer correções para bugs no código e, em geral, aperfeiçoá-lo.

Em 1997 e 1998, PHP/FI teve o apoio de milhares de usuários ao redor do mundo. Uma pesquisa Netcraft de Maio de 1998, indicou que cerca de 60.000 domínios relataram ter cabeçalhos contendo “PHP”, indicando que o servidor de hospedagem de fato tinha o PHP instalado. Este número pode ser equiparado com aproximadamente 1% de todos os domínios da Internet na época.

PHP 3

PHP 3.0 foi a primeira versão que se assemelha com o PHP como existe hoje. O PHP/FI se encontrava ainda ineficiente e não tinha os recursos necessários para prover a aplicação e-commerce que Andi Gutmans e Zeev Suraski de Tel Aviv de Israel estavam desenvolvendo para um projeto da universidade. Por isso, eles começaram outra reescrita completa do interpretador em 1997. Abordando Rasmus online, eles discutiram vários aspectos para a corrente implementação e redesenvolvimento do PHP.

Andi, Rasmus e Zeev decidiram colaborar no desenvolvimento de uma nova e independente linguagem de programação. Essa nova linguagem foi lançada com um novo nome, que removeu a impressão do limitado uso pessoal que o nome PHP/FI 2.0 tinha mantido. O projeto foi renomeado simplesmente para ‘PHP’, com o significado se tornando um acrônimo recursivo – PHP: Hypertext Preprocessor.

PHP 4

Em 1998, logo após o PHP 3.0 ter sido oficialmente lançado, Andi Gutmans e Zeev Suraski começaram a trabalhar em uma reescrita do core do PHP. Os objetivos do projeto eram melhorar a performance das aplicações complexas e melhorar a modularização do código base do PHP.

O novo motor, chamado ‘Zend Engine’ (composto pelos primeiros nome, Zeev e Andi), alcançou os objetivos do projeto com sucesso, e foi introduzido em meados de 1999. O PHP 4.0, baseado neste motor, e uma variedade de novos recursos adicionais foram oficialmente lançados em maio de 2000, quase dois anos após seu antecessor.

PHP 5

O PHP 5 foi lançado em julho de 2004 após um longo desenvolvimento e vários pré-lançamentos. O PHP, foi principalmente impulsionado pelo seu core o Zend Engine 2.0 com um novo modelo de objeto e dezenas de outros novos recursos.

O time de desenvolvimento do PHP inclui dezenas de desenvolvedores, trabalhando em algo relacionado ao PHP e apoiando projetos como PEAR, PECL, documentação e infraestrutura de rede subjacente de bem mais de uma centena de servidores web em seis dos sete continentes do mundo. Embora seja apenas uma estimativa baseada nas estatísticas de anos anteriores, é seguro presumir que o PHP está agora instalado em dezenas, talvez centenas de milhões de domínios em todo mundo.

HHVM – Hack

Entre a versão 5 e a versão 7 do PHP que temos hoje se passaram 11 anos. Neste meio tempo muitas empresas adotaram o PHP como linguagem principal para desenvolvimento de seus sistemas, como por exemplo, o Facebook. Por sua vez, o Facebook, ao ver que se passaram anos sem uma evolução significativa e sem o lançamento de novas versões do PHP, começou a desenvolver a linguagem Hack baseada em PHP e executada em cima do HHVM (HipHop Virtual Machine).

PHP 7

Em dezembro de 2015, após anos de desenvolvimento, é lançado oficialmente o PHP 7.

Entre as novidades mais significativas da versão 7 do PHP está a sua performance, em alguns casos até 9 vezes mais rápida, como podemos ver no comparativo abaixo:

Não vamos entrar a fundo em todas a novidades do PHP 7, pois teríamos que ter um post falando somente deste assunto, mas se você tiver interesse pode acessar os novos recursos PHP 7 .

Aí você deve estar se perguntando: ok, tinha a versão 5 e agora tem a 7 e onde foi parar a 6? Houve um PHP 6. Ou pelo menos uma tentativa dele. Porém, o resultado não foi satisfatório e a versão não foi publicada oficialmente, mas existiam informações sobre essa versão. Logo poderia haver confusão se esta nova versão se chamasse PHP 6.

Então, para evitar esses problemas, a equipe do PHP resolveu chamar a nova versão de PHP 7.

Outro motivo é que tinha muito charlatão por aí vendendo livros, cursos e aulas sobre o PHP 6, que nem sequer existia oficialmente. Se quiser saber mais sobre os diversos motivos dessa escolha, leia o RFC oficial sobre a discussão sobre o nome da versão do PHP .

Tendência histórica do uso de PHP na Web e quem usa

Neste comparativo abaixo podemos ver a tendência histórica do uso de linguagens server-side na web nos últimos 8 anos, onde a linguagem PHP sempre esteve como mais utilizada tendo pequenas oscilações, que se encaixam com sua história como foi citada acima. É possível identificar baixas nos anos onde não teve atualizações significativas, mas o crescimento foi retomado com o lançamento da versão 7.

Fonte: https://w3techs.com/technologies/history_overview/programming_language/ms/y

Hoje, grandes empresas no mercado utilizam essa linguagem como principal para o desenvolvimento de seus sistemas. Empresas como Facebook, que iniciou utilizando PHP e depois desenvolveu sua própria linguagem baseada em PHP, Wikipedia, que utiliza um dos inúmeros CMS desenvolvidos em PHP e outras empresas conhecidas como Twitter, MailChimp, Yahoo, Slack, BMW, KingHost, entre outros.

Padrões, PHP-Fig, PSRs, gerenciamento de dependências e repositório de pacotes

Por volta do ano 2000 tínhamos o gerenciador de extensões chamado PEAR, muito pouco adotado por não termos padrões de codificação no desenvolvimento destas extensões. E por outros problemas, como por se tratava de um gerenciador de extensões para PHP. Então sempre que você fosse utilizar uma extensão ela era instalada junto ao PHP e não para seu projeto específico.

No ano de 2009, foi quando começou a ser formado o grupo PHP-FIG (Framework Interoperability Group). Um grupo formado por representantes de frameworks e pessoas envolvidas com o desenvolvimento da linguagem. Este grupo foi criado para elaborar padrões a serem seguidos para o desenvolvimento PHP e o primeiro padrão a ser lançado foi para implementar o autoload e foi chamado de PSR-0. Com isso, começaram a diminuir os problemas que tínhamos com a utilização de extensões, pois começava-se a ter um padrão de desenvolvimento.

Foi aí que, em 2011, Nils Adermann e Jordi Boggiano iniciaram o desenvolvimento do Composer e do Packagist, o gerenciador de dependências e repositório de pacotes para PHP, sendo lançada a primeira versão estável em 2012.Com os padrões implementado pelas PSR’s, com o gerenciador de dependências e repositório de pacotes, para nós, desenvolvedores, facilitou a reutilização de código.

Frameworks

Escolher um framework para seu próximo projeto PHP pode ser a chave do sucesso do seu projeto. Por que tantos desenvolvedores usam frameworks PHP e outros tantos falam mal de usar? Não há nenhum problema “prós e contras”, eles simplesmente tornam a vida dos programadores muito mais fácil! Como, por exemplo:

  • Acelerar o processo de desenvolvimento;
  • Ajudá-lo a escrever um código bem organizado, estruturado e reutilizável;
  • Fornecer escalabilidade para seus projetos;
  • Seguir o padrão MVC (Model-View-Controller);
  • Estimular práticas de desenvolvimento web modernos, ou seja, programação orientada a objeto e outros paradigmas mais atuais.

Conforme podemos ver na imagem abaixo, PHP tem dezenas de frameworks e você pode escolher o que melhor atende a sua necessidade:

Garantia de qualidade

Na imagem abaixo são mostradas algumas dicas de ferramentas que podem ajudar a garantir a qualidade em seu projeto. Elas podem ser utilizadas de forma que você possa automatizar este processo, como, por exemplo, teste unitário, copy/paste detector, integração contínua com jenkins, BDD, entre outros.

Fonte: http://phpqatools.org

Ambientes, virtualização e conteinerização

Muitas vezes há obstáculos que se interpõem no caminho de mover seu aplicativo no ciclo de desenvolvimento e, eventualmente, para a produção. Além do trabalho real de desenvolver seu aplicativo para responder de forma apropriada em cada ambiente, você também pode se deparar com problemas com rastreamento de dependências, escalabilidade de sua aplicação e atualização de componentes individuais sem afetar a aplicação inteira.

Para estes tipo de problema temos algumas soluções, uma delas é a virtualização, que podemos utilizar com, por exemplo, a ferramenta Vagrant em conjunto com VirtualBox. Com estes dois softwares podemos criar as “receitas” das nossas máquinas e garantir que, em qualquer ambiente, tenhamos as configurações iguais, facilitando, assim, o trabalho em equipe e as publicações em ambientes diferentes.

Outra solução é a utilização de containers através do Docker. Docker é uma plataforma Open Source escrito em Go, que é uma linguagem de programação de alto desempenho desenvolvida dentro do Google e que facilita a criação e administração de ambientes isolados.O Docker possibilita o empacotamento de uma aplicação ou ambiente inteiro dentro de um container e, a partir desse momento, o ambiente inteiro torna-se portável para qualquer outro Host que contenha o Docker instalado.

Isso reduz drasticamente o tempo de deploy de alguma infraestrutura ou até mesmo aplicação, pois não há necessidade de ajustes de ambiente para o correto funcionamento do serviço, o ambiente é sempre o mesmo, configure-o uma vez e replique-o quantas vezes quiser. Outra facilidade do Docker é poder criar suas imagens (containers prontos para deploy) a partir de arquivos de definição chamados Dockerfiles.

Integração contínua

Integração contínua tornou-se muito importante na comunidade de desenvolvimento de software. Isso provavelmente, ocorreu devido ao grande impacto causado pelas metodologias ágeis. Em equipes que adotaram tais metodologias (eXtreme Programming, Scrum, entre outras), integração contínua é um dos pilares da agilidade, garantindo que todo o sistema funcione a cada build de forma coesa, mesmo que sua equipe seja grande e que diversas partes do código estejam sendo alteradas ao mesmo tempo.

Basicamente, a grande vantagem da integração contínua está no feedback instantâneo. Isso funciona da seguinte forma: a cada commit no repositório, o build é feito automaticamente, com todos os testes sendo executados e falhas sendo detectadas de forma automática. Se algum commit não compilar ou quebrar qualquer um dos testes, a equipe toma conhecimento instantaneamente (através de email ou chat, por exemplo, indicando as falhas e o commit causador das mesmas).

A equipe pode então corrigir o problema o mais rápido possível, o que é fundamental para não introduzir erros ao criar novas funcionalidades, refatorar, etc. Integração contínua é mais uma forma de trazer segurança em relação às mudanças: você pode fazer modificações sem medo, pois será avisado caso algo saia do esperado.

Abaixo temos algumas ferramentas que podem nos auxiliar no dia a dia, facilitando o trabalho em equipe e a utilização de integração contínua da melhor forma, trazendo benefícios.

Além destes tópicos abordados aqui, entre outros assunto falamos também sobre a importância de se envolver com a comunidade de desenvolvedores, para networking e compartilhamento de conhecimento, e como esta participação na comunidade pode gerar benefícios para sua carreira.

Para quem não assistiu o painel Modern PHP, fique ligado, pois a gravação estará disponível na área de conteúdo grátis da KingHost em breve. Os slides da apresentação podem ser conferidos clicando aqui.

Para fechar este post, confira a nossa entrevista nos bastidores do evento:

Fernando Silva

Fernando Silva

Analista de Desenvolvimento em KingHost
Analista de Desenvolvimento na KingHost, graduado em Análise e Desenvolvimento de Sistemas (ADS) pela Faculdade Senac Porto Alegre, onde ganhou o Prêmio Keller de melhor trajetória acadêmica. Atualmente faz pós-graduação em Segurança Cibernética pela UFGRS, além disso, é um dos coordenadores da comunidade PHP-RS, é entusiasta Open Source e Software Livre.
Fernando Silva

Últimos posts por Fernando Silva (exibir todos)

Comentários

comentário(s)

Categories