Gerenciando dependências no PHP com Composer

23/03/2013

Gerenciamento de dependências

O cenário é bem comum: desenvolve-se um projeto em equipe, onde várias bibliotecas de terceiros são utilizadas. Além do controle de quais bibliotecas foram incorporadas no projeto, é necessário gerenciar as versões de cada uma. Complicado? Não com o Composer.

A proposta do Composer é justamente facilitar o gerenciamento de dependências para o PHP. Outras linguagens de programação, como o ruby, já utiliza essa abordagem com o Bundler. Neste artigo, mostrarei como instalar o composer, e exemplificar brevemente como utilizar as bibliotecas gerenciadas.

Instalando o composer

É necessário ter a versão mínima do PHP 5.3.2. O processo de instalação consiste basicamente em baixar o arquivo binário e executa-lo. Para isso, basta executar o comando abaixo em seu diretório do projeto.

1
$ curl -sS https://getcomposer.org/installer | php

Em sua pasta do projeto, é criado um arquivo composer.phar que será responsável por executar a instalação das dependências. Opcionalmente, você pode ter o composer disponível globalmente no sistema. Dessa forma, você não precisa instala-lo em cada projeto a ser desenvolvido. Para isso, mova o composer.phar para  pasta bin (estou levando em consideração apenas sistemas unix).

1
$ sudo mv composer.phar /usr/local/bin/composer

Pronto. Para certificar de que está tudo ok, digite em seu terminal:

1
$ composer

Se você utiliza plataforma windows, veja aqui como instalar.

Usando o Composer

Primeiramente você deve criar um arquivo composer.json, onde será definido as dependências de seu projeto. Se você não conhece nada sobre json, conheça mais sobre. Abaixo, um exemplo de um arquivo, onde instalaremos a biblioteca PHPThumb.

{
    "require": {
        "dannytrue/phpthumb": "dev-master"
    }
}

Observe que é definido o nome do pacote e a versão que deve ser instalada.  Uma vez definida as bibliotecas dependentes, é só chamar o maestro. No terminal, digite:

1
$ composer install

Uma pasta vendor/ é criada em seu projeto contendo as bibliotecas que você definiu, juntamente com dois arquivos: composer.lock e autoload.php. No composer.lock está especificado todas as versões instaladas para garantir versões específicas . Já o autoload.php é uma maneira de carregar facilmente as bibliotecas instaladas.

Usando o PHPThumb

Continuando com nosso exemplo, teremos agora uma vendor com a biblioteca PHPThumb e um arquivo autoload.php, que facilita o carregamento das classes. Depois de carregado, basta seguir a documentação da biblioteca de como utiliza-la. Em nosso exemplo:

5
6
7
8
9
require 'vendor/autoload.php';
 
$phpthumb = new PHPThumb\GD('composer.png');
$phpthumb->resize(100, 100);
$phpthumb->show();

Faça o download do código e execute o “composer install”.

Repositório de bibliotecas

Para finalizar, não poderia deixar de existir o Packagist, o repositório central de bibliotecas. São encontradas mais de 8.880 pacotes registrados. Além disso, você também pode submeter seu projeto open source e disponibilizar para a comunidade. Vale a pena dar navegada!

Até a próxima.