Composer: O maestro do PHP

Allan Barbosa
Prolog App
Published in
4 min readAug 18, 2021

O Composer foi inspirado no npm do Node e no bundler do Ruby, desenvolvido por Nils Adermann e Jordi Boggiano, e lançado em 2012. Basicamente, ele gerencia quais bibliotecas serão utilizadas no projeto, seja às instalando, atualizando ou removendo. Tudo através de configurações simples.

Afinal, o que é o Composer?

Composer é o gerenciador de dependências do PHP. Toda vez que o seu site ou aplicação precisar de um código ou biblioteca de terceiros, provavelmente é uma boa ideia incluí-la através do Composer. Se o seu código precisa de uma biblioteca, e esta biblioteca precisa de uma terceira, o próprio Composer gerenciará isso para você.

composer.json

A instalação do Composer é documentada através de seu próprio site https://getcomposer.org/download/ no qual especifica detalhadamente como instalar em cada sistema operacional.

Quando realizado o download, o Composer utiliza um arquivo chamado composer.json na raiz do projeto. Nesse arquivo o desenvolvedor irá especificar quais bibliotecas serão utilizadas no projeto.

No código acima foi definido através do atributo require qual dependência será utilizado no projeto junto com a versão. Na versão definida tem o símbolo ^ que significa que quando atualizado as dependências inseridas, a dependência stanik/filmweb-scrapping irá atualizar a versão ao equivalente >= 0.0.2 < 1.0.0. Existem outros símbolos que podem ser declarados como por exemplo o * no qual irá sempre atualizar para a versão mais recente. Mais detalhes sobre a configuração de versionamento do pacote, pode ser visto na documentação do Composer.

Através do terminal, o desenvolvedor pode apenas atualizar o pacote adicionado ou fazer direto a requisição, atualizando automaticamente no arquivo composer.json. Exemplos abaixo:

  1. Comando para atualizar os pacotes adicionados no arquivo:
    composer update
  2. Comando para fazer requisição de um novo pacote:
    composer require stanik/filmweb-scraping

Quando definido quais pacotes serão utilizados, automaticamente o download é feito na pasta vendor, na raiz do projeto, mas também é configurável.

Packagist

No código exemplo do tópico anterior foi utilizado o pacote stanick/filmweb-scraping, mas afinal onde posso encontrar esses pacotes? O lugar mais simples e rico de ser encontrado é através do Packagist onde contém os pacotes que podem ser utilizados. Exemplo na imagem abaixo:

Nas imagens acima mostra detalhadamente o projeto com link do Github do pacote e a página da aplicação exemplificando muitas vezes como deve ser utilizado. Outro detalhe muito importante na página é que mostra quais ítens são necessários ter para que possa funcionar corretamente no projeto (no exemplo acima é necessário ter no mínimo o PHP 7), conflitos, as versões e os exemplos em código de como dever ser utilizado.

Autoload

Uma funcionalidade bem bacana do Composer é a utilização do Autoload. Ele opera de forma que o desenvolvedor não precise ficar declarando require várias vezes quando um arquivo necessita de scripts de outros arquivos. Tudo isso será simplificado através de uma única linha de comando require vendor/autoload.php.

O Composer faz o autoload das classes do projeto. Para isso, é preciso declarar um atributo chamado autoload no arquivo composer.json

No exemplo do código acima, está seguindo a convenção PSR-4, que é uma PHP Standards Recommendations, que foi criada pelo PHP-FIG (PHP Framework Interop Group) que define normas para se criar o autoload do PHP. No caso está sendo atribuído o namespace app para o diretório app na raiz.

Feito isso, o código estará acessível através desse namespace, a única configuração que deverá ser feita será de incluir o seguinte código:

vendor/autoload.php

Exemplo prático de Autoload

Logo abaixo um exemplo prático e simples de como é utilizado o Autoload.

  1. Atributo declarado no composer.json

2. Criação de duas classes em arquivos diferentes

3. Chamada do require autoload.php

4. Resultado

Percebe-se que foi declarado o require apenas uma vez, se não fosse utilizado o Autoload teria que ser feito duas vezes para chamar as classes Produto e Funcionario.

Conclusão

Dentre as funcionalidades que o Composer facilita, estão:

  1. Instalação, atualização e remoção das dependências do projeto
  2. Autoload
  3. Plugins com comportamentos padrões
  4. Facilidade em utilizar dependências que em situações comuns seriam mais complexas de gerenciar.

O Composer é uma excelente ferramenta para o desenvolvedor, pelo simples fato de gerenciar as dependências de um projeto, ajudando para que o foco seja dado ao desenvolvimento. São muitos os pacotes a serem utilizados pelo desenvolvedor, desde PHPUnit até uma consulta de CEP. Apresenta uma gama de opções muito grande facilitando a vida do desenvolvedor PHP.

--

--