Back-End

6 mar, 2018

PHP Experience 2018: PHP under the hood

Publicidade

Após o intervalo, voltamos com o terceiro keynote da noite, estrelado por Marcelo Camargo, analista de projetos especiais na NG Informática. Sua apresentação foi bastante técnica e, como o próprio nome já indica, teve como objetivo mostrar um pouco do funcionamento do PHP em baixo nível.

Marcelo começou explicando um pouco sobre os conceitos utilizados pelo PHP para fazer toda interpretação e validação do código PHP que escrevemos. Ele falou sobre Tokens, que é a maneira como nosso código é dividido pelo Parser, que tem como papel definir o que é aceito ou recusado sintaticamente. Para isso, ele tem definido uma série de regras, como as de precedência (que define quais símbolos devem ser interpretados e qual ordem) e de associação. Marcelo também comentou sobre a tabela de símbolos, ou seja, a forma como as variáveis que são declaradas nas classes e métodos são armazenadas internamente.

Marcelo, então, explicou sobre o funcionamento da Zend Virtual Machine, a máquina virtual em que o PHP é baseada. Ele falou de vários detalhes internos de seu funcionamento, como os opcodes. Estes são as operações do PHP executadas em baixo nível, algo semelhante ao assembly moderno, porém mais amplo.

Para demonstrar seu funcionamento, ele utilizou o Vulcan Logic Dumper, uma espécie de extensão do PHP utilizada para debugar os opcodes da máquina virtual. Através deste plugin, ele mostrou como um código relativamente simples é interpretado passo a passo e como conseguimos utilizar essa informação para otimizar o código.

Por fim, ele passou uma série de recomendações para quem quiser se aprofundar no assunto.