PHP e gerenciamento de pacotes com PECL

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.

Banner da Escola de Programação: Matricula-se na escola de Programação. Junte-se a uma comunidade de mais de 500 mil estudantes. Na Alura você tem acesso a todos os cursos em uma única assinatura; tem novos lançamentos a cada semana; desafios práticos. Clique e saiba mais!

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!

Giovanni Tempobono
Giovanni Tempobono

Giovanni é instrutor na Alura e desenvolvedor de software. Possui um bacharel em Ciência da Computação pelo Mackenzie e gosta muito de conhecer novas linguagens e tecnologias.

Veja outros artigos sobre Programação