Composer, gerenciando as dependências do PHP
O composer é uma ferramenta de controle de dependências para o PHP, semelhante ao Maven do Java. Ela nos permite gerenciar as dependências de nosso projeto, ou seja os artefatos (bibliotecas e pacotes) de software de terceiros que nosso projeto precisa para funcionar, permitindo apenas declará-los e um arquivo especifico e a ferramenta fica responsável por instalar e atualizar as dependências declaradas.
Uma das grandes vantagens das ferramentas de gerenciamento de dependências é que algumas bibliotecas acabam tendendo suas próprias dependências(principalmente quando estamos trabalhando com frameworks) e controlar a dependência da dependência acaba se tornando impraticável, com uma ferramenta de controle de dependências apenas declaramos qual biblioteca queremos utilizar e a ferramenta se encarrega de buscar e instalar suas dependências.
Instalando o Composer
Para instalar o Composer é necessário estar com php-cli instalado, após basta executar o código abaixo.
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('sha384', 'composer-setup.php') === '93b54496392c062774670ac18b134c3b3a95e5a5e5c8f1a9f115f203b75bf9a129d5daa8ba6a13e2cc8a1da0806388a8') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" php composer-setup.php php -r "unlink('composer-setup.php');"
Ele irá baixar o composer.phar, que basicamente é o executável da ferramenta, para o diretório corrente e assim já é possível utilizá-lo. Também pode ser interessante instalar em um outro diretório, por exemplo em um que esteja no seu PATH, isto pode ser feito alterando a linha 4 do código de instalação para:
php composer-setup.php --install-dir=bin
Sendo bin o diretório no qual se deseja ser instalado o composer.
Para executar o composer basta utilizar o comando:
php composer.phar
Como falamos anteriormente para definir as dependências que o composer irá gerenciar precisamos declará-las em um arquivo chamando composer.json
touch composer.json
Agora vamos a um exemplo simples, vamos declarar a dependência do PHPMailer a um projeto, para isso adicionaremos o seguinte código no composer.json
{
"require":{
"phpmailer/phpmailer":"^6.0"
}
}
Na propriedade require adicionamos todas as dependências de nossa aplicação, informando o nome do pacote e sua versão. Para descobrir os nomes dos pacotes podemos utilizar o site Packagist.
Uma vez alterado o arquivo vamos executar o comando para composer instalar a dependência declarada.
php composer.phar install
Este comando irá criar uma pasta chamada vendor e irá baixar as dependências para ela. Este comando deve ser executado somente uma vez, para qualquer alteração do arquivo composer.json deve utilizar o comando update.
Outra forma de adicionar as dependências de nosso projeto é através do comando:
php composer.phar require phpmailer/phpmailer
Este comando irá adicionar a dependência no arquivo composer.json e baixá-la.
Agora para utilizar as bibliotecas gerenciadas pelo composer basta adicionar o script de autoload.php do composer ao seu, como no exemplo abaixo, e utilizar as classes da biblioteca normalmente.
require 'vendor/autoload.php';
use PHPMailer\PHPMailer\PHPMailer;
$phpmail = new PHPMailer();
...
Para removermos um pacote podemos simplesmente remover sua linha do require do arquivo composer.json e executar o comando update, que irá atualizar todas as dependências do projeto.
php composer.phar update
Ou também podemos executar o o comando remove que realiza os dois procedimentos.
php composer.phar remove PHPMailer/PHPMailer
Para buscar o nome dos pacotes podemos realizar uma busca com o comando search.
php composer.phar search phpmailer
Outros comando podem ser visto pelo comando list
php composer.phar list
Este é o funcionamento básico do composer. T++