Composer init: Como começar a utilizar em seus projetos?
Tags: composer, php
Published: 2022-02-27 00:47:19

Composer é uma ferramenta para gerenciamento de dependências em PHP, com ele é possível instalar, atualizar e gerenciar bibliotecas em seus projetos de forma padronizada e simples.

Como para algumas pessoas o composer ainda é um mistério, o intuito deste post é mostrar como baixar, configurar e utilizar o composer de forma simples em um ambiente Linux

Nesse artigo vou abordar a utilização do composer em um projeto novo, porém, todos comandos utilizados devem funcionar em um projeto já iniciado que não possua um composer.json

**Instalando o composer**

Para utilizar o composer é necessário primeiramente possuir o PHP previamente instalado em sua maquina na versão 5.3.2 ou superior, como não é o foco desse artigo a instalação e configuração do PHP em si, recomendo que consulte a documentação oficial para obter o tutorial de como instala-lo em sua maquina.

Para iniciar vamos criar um diretório chamado teste-composer, e baixar composer via curl nesse diretório com o seguinte comando:

```bash
mkdir teste-compose
cd teste-compose
curl -sS https://getcomposer.org/installer | php

```

**Usando o composer**

Caso não tenha seguido os passos acima para baixar o composer em sua maquina, vamos criar um diretório chamado teste-composer, caso já tenha feito isso no passo anterior, basta entrar nesse diretório e criar um arquivo chamado composer.json com o seguinte conteúdo:

```JSON
{
    "name": "nunesjr1993/nome_do_projeto",
    "description": "Breve descrição do projeto",
    "authors": [
        {
            "name": "Antonio Nunes Moreira Junior",
            "email": "nunesjr1993@gmail.com"
        }
    ],
    "require": {
        "php": ">=5.6",
        "monolog/monolog": "2.0.*"
    }
}
```

Após isso vamos rodar o comando:

```BASH
php composer.phar install
```

Rodando esse comando o composer irá ler o arquivo composer.json e criar o diretório /vendor onde será colocadas as dependências informadas no bloco de require do composer.json, também será criado um arquivo chamado composer.lock onde é especificado exatamente as versões dos pacotes instalados atualmente no projeto, por ultimo gerar o arquivo de autoload dentro da vendor, conforme pode ver no retorno do terminal abaixo:

![Imagem ilustrativa](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z5ml9k1ybfh27j6oqimq.png)

**Importante:** São incluídas automaticamente as dependências de desenvolvimento (também pode ser incluído com parâmetro require-dev) quando o PHP da maquina a qual esta executando o install possuir o XDebug configurado. 

**Incluindo autoload e utilizando as bibliotecas**

Para demonstrar na pratica o funcionamento de um biblioteca baixada e gerenciada pelo composer, utilizamos uma biblioteca chamada monolog, que trabalhar com logs em PHP de forma simples e padronizada, para utilizar a biblioteca em questão que instalamos em nosso projeto, precisamos importa-la, como o composer gera um arquivo de autoload que permite realizar a importação de todos os pacotes baixados e configurados em seu projeto com somente um require, vamos criar um arquivo chamado teste.php dentro do nosso diretório teste-composer com o seguinte conteúdo:

```PHP
<?php

require_once __DIR__ . '/vendor/autoload.php';
use Monolog\Logger;
use Monolog\Handler\StreamHandler;

$log = new Logger('composer');
$log->pushHandler(new StreamHandler('teste.log', Logger::WARNING));

// add records to the log
$log->warning('Isso é um log.');
```

Para executar esse teste basta rodar o comando abaixo dentro do diretório do projeto onde criou o teste.php:

```BASH
php teste.php
```

Após executar esse comando não deve obter nenhum retorno no terminal, porém, se você listar os arquivos novamente vai visualizar o arquivo de log gerado, conforme pode ver na imagem abaixo:

![Imagem ilustrativa](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/khehw4p7lej9mgvwo98y.png)


**Conclusão**

Composer é uma ferramenta muito poderosa que facilita e padroniza a maneira de trabalhar com dependências e bibliotecas em PHP, então porque não começar a utilizar a seu favor? 

**Referencias**

https://getcomposer.org
https://tableless.com.br/composer-para-iniciantes
https://www.alura.com.br/curso-online-php-composer