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++