PHP Composer: autoloading, executáveis e scripts

PHP Composer: autoloading, executáveis e scripts
Giovanni Tempobono
Giovanni Tempobono

Compartilhe

O Composer é uma das ferramentas principais do PHP moderno.

Autoloading com o Composer

Imagine que você precisa enviar um e-mail, e para isso vai ser necessário o uso de três classes Email.php, Mensagem.php e Servidor.php. Quando vamos utilizar elas em um arquivo,temos que fazer uso da função de require.

require ‘Email.php’;
require ‘Mensagem.php’;
require ‘Servidor.php’;

Legal, isso funciona, mas imagine que precisássemos utilizar mais de vinte classes, esse código iria ficar gigante né? para contornar isso, podemos utilizar a função de autoload do Composer.

O Composer faz o autoload das classes do seu projeto, do mesmo jeito que ele faz o autoload de bibliotecas externas. Para isso, existe uma propriedade chamada autoload que pode ser adicionada no composer.json:

{
    "autoload": {
        "psr-4": {"MeuNamespace\\": "src/"}
    }
}

Neste código, estamos fazendo uso do autoload seguindo a convenção PSR-4. A PSR-4 é uma das PHP Standards Recommendations, que foi criada pelo PHP-FIG (PHP Framework Interop Group) que define normas para se criar o autoload de arquivos PHP. No caso, estamos atribuindo o namespace “MeuNamespace” para o diretório src na raiz do programa.

Com isso todo o nosso código estará acessível através desse namespace, a única configuração que devemos fazer é incluir na nossa aplicação o arquivo de autoload do Composer! ele pode ser incluído com o seguinte código:

require ‘vendor/autoload.php’;

O Composer mantém um cache próprio em relação aos arquivos de autoload, então precisamos utilizar o seguinte comando toda vez que fizermos uma alteração no autoload, pois ele vai atualizar o cache.

composer dump-autoload

Acessando arquivos executáveis pelo Composer.

Em uma aplicação real, é muito comum precisarmos desenvolver testes para que a nossa aplicação não sofra com regressão de funcionalidade ou bugs que podem ser criados conforme vamos desenvolvendo. Uma biblioteca que auxilia com isso no PHP é o PHPUnit, e podemos instalar no nosso projeto utilizando o Composer.

composer require --dev phpunit/phpunit

Observe o –dev utilizado logo depois do require, isso é desejável nessa situação pois o PHPUnit é uma dependência que só faz sentido enquanto estamos no ambiente de desenvolvimento e ela não deve ser instalada no ambiente de produção. No ambiente de produção, o comando a ser digitado para instalar as dependências é:

composer install --no-dev

O que instalará somente as dependências que podem ser instaladas em um ambiente de produção, excluindo as dependências de desenvolvimento e deixando o ambiente de produção mais enxuto.

Depois de instalarmos dependências que possuem arquivos executáveis instaladas pelo Composer, elas ficam acessíveis no diretório vendor dentro da pasta bin. Para executarmos o PHPUnit, faremos o seguinte:

php vendor/bin/phpunit

Scripts customizados com o Composer

Quando executamos testes na nossa aplicação, precisamos de toda a performance possível para que os testes executem logo. Uma otimização que pode ser feita é desligar o debugger quando executamos a bateria de testes, isso pode ser feito com o seguinte comando:

php -d xdebug.remote_enable=Off -d xdebug.remote_autostart=Off vendor/bin/phpunit

Grande, não é? para facilitar, podemos criar um comando customizado do Composer, basta adicionar a seguinte propriedade no arquivo composer.json:


{
    "scripts": {
        "test": "@php -d xdebug.remote_autostart=Off -d xdebug.remote_enable=Off vendor/bin/phpunit"
    }
}

Legal! agora quando executarmos o comando composer test, vamos executar de uma maneira mais curta o mesmo comando que digitamos antes.

Você pode descobrir mais sobre o Composer olhando a documentação oficial e se você quiser conhecer mais sobre desenvolvimento de PHP moderno, acesse a formação PHP da Alura.

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