PHP e gerenciamento de pacotes com PECL
Nesse artigo vou mostrar como adicionar extensões através do repositório central de extensões o PECL.
Estou desenvolvendo um blog usando PHP e quando acesso a primeira página, os posts mais recentes eram exibidos e, por baixo dos panos, eles eram obtidos através de um banco de dados responsável por armazenar o conteúdo.
Para o PHP conseguir conectar em um banco de dados, preciso informar o nome do banco de dados, juntamente com o usuário e senha. Coloquei essas informações no código fonte, porém, após um tempo precisei mudar a senha do banco de dados e tive que modificá-la no código.
Depois disso, percebi que é ruim que estes dados fiquem no código, pois uma alteração neles implica em uma mudança direta no código fonte.
Procurando maneiras para melhorar essa questão, descobri que é uma boa prática guardar estes dados em um arquivo separado em um formato como XML, JSON ou YAML. Entre esses tipos de formato, escolhi o YAML, por ter uma sintaxe mais simples de ler.
mysql:
nomebanco: blog
usuario: admin
senha: senhasegura
Precisei ler este arquivo a partir do nosso programa PHP. Como a documentação da biblioteca YAML apresenta a função yaml_parse_file
para ler um arquivo YAML, então usei a função:
<?php
$dados = yaml_parse_file('teste.yaml');
var_dump($dados);
Quando executei o programa no meu computador, ao invés dele funcionar, o seguinte erro foi impresso na tela:
O que aconteceu? O PHP disse que a função yaml_parse_file
não existe. Pesquisando um pouco na internet, vi que YAML não faz parte da distribuição padrão do PHP, já que é uma extensão.
E como podemos adicionar esta extensão no PHP?
Extensões no PHP
Quando precisamos realizar alguma operação que exija alta performance, como no meu caso de processar um arquivo YAML, e queremos que isso seja feito da forma mais rápida possível, podemos utilizar uma extensão do PHP.
Existe um repositório online de extensões da linguagem PHP disponíveis para download chamado PECL (PHP Extension Community Library), que é equivalente ao Composer, só que armazena extensões e não bibliotecas.
Como estou utilizando Linux, instalei o PECL utilizando o comando:
apt-get install php-pear
No caso do Windows, utilizando o XAMPP, o PECL já deve estar instalado. No Mac, é necessário utilizar o Homebrew e para instalar o PHP junto com o PECL, é necessário utilizar o seguinte comando:
brew install php73 --with-pear
Com o PECL instalado, agora vamos procurar pelo YAML.
Utilizando o PECL
Para utilizar o PECL, ele oferece somente uma interface por linha de comando, para procurar pela extensão YAML utilizei o seguinte comando:
pecl search yaml
Para instalá-lo, o comando:
pecl install yaml
Legal! A extensão foi instalada e no terminal teve a seguinte saída:
Quando utilizei o comando para instalar, a última linha mencionou que eu deveria adicionar “extension=yaml.so” para o arquivo php.ini. O que isso quer dizer?
Existe um arquivo de configuração do PHP chamado php.ini, onde estão armazenadas todas as configurações que são aplicadas a tempo de execução no interpretador da linguagem e as extensões que devem ser carregadas.
Às vezes pode ser um pouco complicado de encontrar este arquivo, pois, em algumas instalações do PHP, podem existir mais de um php.ini, já que ele pode ser encontrado de duas maneiras: na linha de comando e pelo servidor web. Primeira maneira com o terminal
Para exibir as informações de configuração do PHP no meu computador, abri o terminal e digitei o comando:
php -i
Com o qual obtive o seguinte retorno:
No meio desse monte de linhas, procurei pelo seguinte texto:
Loaded Configuration File => /etc/php/7.2/cli/php.ini
Isso mostra o diretório do arquivo de configuração que foi carregado. Porém, estava um pouco difícil de encontrar essa linha. Para facilitar, decidi copiar o texto e colar em um editor de texto, como o Visual Studio Code, para utilizar a função de busca. Segunda maneira com um arquivo php
Na minha máquina também estava utilizando o PHP na web, que é utilizado para exibir páginas de websites, para obter as informações de execução abri um arquivo com a extensão .php e digitei o seguinte código:
<?php
phpinfo();
?>
uando acessei este arquivo, apareceu a seguinte tela, que mostra a configuração Loaded Configuration File com o arquivo php.ini utilizado:
Na linha Loaded Configuration File, o nome do arquivo retornado foi /etc/php/7.2/cli/php.ini, com o nome do arquivo em mãos, abri ele em um editor de código e no final do arquivo e incluí a linha que havia sido pedida.
extension=yaml.so
Agora que consigo utilizar a função que lê o arquivo YAML, executando aquele código que foi citado no começo do deste post, consigo transformar este arquivo de configuração em um array do PHP e assim, utilizá-lo no meu blog.
Caso eu precise remover a extensão, preciso utilizar o seguinte comando:
pecl uninstall yaml
E para finalizar, precisei remover a chamada da extensão no arquivo de configuração php.ini para que o PHP não tente mais executar esta extensão.
Conclusão
Existem funcionalidades da linguagem PHP, como a de ler arquivos YAML, que por razões de performance não podem ser escritas em PHP e distribuídas como uma biblioteca no Composer,mas podem ser escritas como extensões da linguagem.
Para instalar esta extensão utilizei o PECL, que é o repositório central de extensões da linguagem PHP. O PECL possui uma interface via linha de comando, no qual executei o comando para instalar a extensão YAML e depois, incluí ele no arquivo de configuração do PHP.
Com isso você estará preparado para utilizar o PECL e instalar extensões do PHP! Gostou do post? Por que não dar uma olhada nos cursos de PHP da Alura? Você poderá aprender sobre muitas ferramentas importantes do PHP moderno como o Composer, Doctrine e Laravel!