Aproveite o mês das
carreiras na Alura

Até 44% OFF

Falta pouco!

00

DIAS

00

HORAS

00

MIN

00

SEG

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
Banner da Imersão de IA da Alura com Google Gemini. Participe de aulas gratuitas online com certificado. Domine as inovações mais recentes da IA.

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