Você deve tá se perguntando: “Porquê raios eu iria querer aprender a fazer isto?” Se você gosta de fuçar sobre programação já é um bom motivo para continuar lendo. Agora, se você é um daqueles leitores que precisam de mais para prosseguir, segue abaixo alguns motivos retirados do Zend Developer Zone:
You have a particularly clever bit of code you want to sell, and it’s important that the party you sell it to be able to execute it, but not view the source.
You’ve already got some PHP code written, but you know it could be faster, smaller, and consume less memory while running.
There is some library or OS specific call which cannot be made from PHP directly because of the degree of abstraction inherent in the language.
Qual será o nosso projeto?
Para fugir um pouco da mesmice, ao invés de criamos o famoso “Olá Mundo”, iremos iniciar o desenvolvimento de uma extensão de automação de desktop. Esse projeto foi inspirado na biblioteca RobotJS.
Do que vamos precisar?
Primeiro, é preciso que o leitor tenha noções basicas da linguagem C e familiaridade com a linha de comandos para tirar melhor proveito desse passo a passo. Segundo, vamos precisar instalar algumas dependências para nos auxiliar durante processo.
Para instalar as dependências no Debian ou Ubuntu:
No Arch Linux:
Colocando a mão na massa
Baixe o código fonte do PHP:
Esse comando irá gerar o diretório php-src; Em seguida, acesse o diretório de extensões dentro dele (segue abaixo o exemplo):
Agora vamos criar e acessar o diretório da nossa extensão:
Feito isso, crie o config.m4 (é um arquivo de configuração) com o seu editor favorito e insira as seguintes linhas:
Depois crie o php_phpbot.h e insira:
Após, crie o phpbot.c com o seguinte conteúdo:
Agora, vamos preparar o ambiente para compilar a extensão:
Em seguida vamor garantir que temos todas as dependências para concluir o processo de compilação:
Vamos compilar:
Se tudo deu certo, o arquivo phpbot.so foi gerado no diretório modules.
Copie o phpbot.so para o diretório de extensões do PHP, caso você não saiba o caminho do mesmo, verifique:
No meu caso é o /usr/lib/php/modules, então:
Para ativar a extensão vamos criar o 10-phpbot.ini.
Se você não souber onde criar, digite: