Composer é uma ferramenta para gerenciamento de dependências para o PHP que vem ganhando espaço e se tornando cada vez mais indispensável. Com algumas poucas linhas de configurações você define todas as bibliotecas de terceiros ou mesmo suas que deseja/precisa utilizar em seu projeto, o composer encarrega-se de baixá-las e criar um autoloader deixando-as prontas para uso.
Para muitos o composer ainda é um mistério então o intuito deste post é mostrar ao usuário que ainda não conhece como baixar, configurar e utilizar o composer de forma básica.
Do que preciso?
Basicamente precisará do PHP em sua versão a partir da 5.3.2.
Os exemplos criados neste post serão baseados em ambiente Linux, em sua maioria funcionará da mesma forma no Mac OS X mas para o Windows recomendo que leia a documentação oficial. O conceito é o mesmo nos três Sistemas Operacionais no entanto no Windows há algumas mínimas diferenças.
Como começo?
Primeiramente você precisa realizar o download do phar do composer. O phar é um empacotamento de uma aplicação e é utilizado para fornecer bibliotecas e ferramentas nas quais o desenvolvedor não tem de se preocupar com sua estrutura. Em outras palavras, é pegar e usar.
Para que você obtenha o composer há duas maneiras distintas. Através da biblioteca cURL e através do próprio PHP. Basta selecionar uma das opções abaixo e executar em seu terminal.
Instalando via cURL:
curl -sS https://getcomposer.org/installer | php
Instalando via PHP:
php -r “readfile(‘https://getcomposer.org/installer’);” | php
Existem outras maneiras de instalar, na verdade são configurações mais avançadas de instalação que não serão abordadas aqui por se tratar de ser um conteudo voltado à iniciantes.
Qual o próximo passo?
Antes de você sair querendo fazer as coisas acontecerem precisamos passar alguns conceitos básicos.
O composer facilita o gerenciamento de dependências em seus projetos, com isso houve a necessidade de uma padronização para a interoperabilidade entre os mais diversos frameworks PHP do mercado. Mas detalhe que o composer não limita-se à uso somente em frameworks, você pode tranquilamente utilizá-lo em seus projetos com PHP puro desde que siga as recomendações da FIG (Framework Interoperability Group).
O arquivo de configurações
Agora que você já tem uma noção do que é o composer está na hora de botar a mão na massa.
Primeiramente crie um arquivo chamado composer.json. Este arquivo possuirá as configurações de dependências de sua aplicação em formato Json.
Abaixo segue um esqueleto básico do _composer.json_ – o arquivo em que as dependências serão descritas, em seguida o mesmo será esclarescido.
{ "name": "Nome do projeto", "description": "Breve descrição do que a aplicação se propoe a fazer", "authors": [ { "name": "Seu nome", "email": "seu-email@seu-dominio.com" } ], "require": { "php": ">=5.2.8" } }
O “name” é o nome de sua aplicação. Esta marcação é opcional mas recomendada.
O “description” é uma breve descrição do que sua aplicação se propõe a fazer. Também opcional.
Em “authors” aparecem os créditos de desenvolvedores que contribuiram com o projeto.
O “require” basicamente deixa claro quais são as dependências de sua aplicação. Neste caso se a versão do PHP for abaixo da 5.2.8 simplesmente uma mensagem de erro será lançada ao instalar as dependências lhe informando que não é possível prosseguir por nem todos os requisitos estarem satisfeitos.
Como você pode ver acima este é o esqueleto de uma aplicação muito básica, sem configurações avançadas e sem indicação de nenhuma biblioteca de terceiro.
Ok, mas e agora?
Agora que você já tem o esqueleto de seu composer configurado em sua aplicação falta incluir alguns pacotes. O composer utiliza como seu repositório o Packagist onde qualquer desenvolvedor pode criar seus próprios pacotes e disponibilizá-los para a comunidade semelhante o github. O Packagist lhe fornece o total de instalações dos pacotes por dia, mês e o total. O mais legal é que estas estatísticas são fiéis, ou seja, se alguém remover um pacote do seu _composer.json_ o total de instalações é reduzido. Com esta informação restam contagens apenas aplicações que realmente estão utilizando determinado pacote.
Um pequeno exemplo.
Para fins didáticos mostrarei aqui a utilização de uma biblioteca para slug criada por Kevin Le Brun, o slug.php. Na seção em que são definidos os requerimentos (require) no arquivo _composer.json _basta adicionar logo abaixo da linha que define que o necessita do PHP o nome do pacote desejado e a sua versão. Neste caso o pacote é “kevinlebrun/slug.php” e a versão é “1.*”. Com isso a nova estrutura do composer.json é:
... "require": { "php": ">=5.2.8", "kevinlebrun/slug.php": "1.*" } ...
Muito bem, agora está tudo pronto para que você veja o composer em ação. Na pasta raíz de sua aplicação (que é a mesma que o _composer.json_ e o _composer.phar_ se encontram) rode o comando php composer.phar install. Este comando fará o composer ler as configurações setadas no arquivo json e instalar todas as bibliotecas/pacotes necessários para a sua aplicação e também estas mesmas bibliotecas que possuírem dependências terão as mesmas resolvidas. Pense no composer mais ou menos como o apt-get do Linux debian-like. Nele, ao instalar um pacote qualquer todas suas dependências são resolvidas automaticamente.
Perceba que na pasta em que encontra-se sua aplicação agora existem a pasta vendor, um arquivo _composer.phar_ (que já encontrava-se ali), um arquivo _composer.json_ (que já encontrava-se ali) e um arquivo _composer.lock_ – que é o arquivo gerado automaticamente após a instalação com sucesso.
O próximo passo (mais um)
Agora já temos tudo. O composer gerenciando as dependências, as dependências definidas em nosso arquivo composer.json, e uma pasta contendo todas as dependências necessárias juntamente com o autoloader do composer que encarrega-se de registar todos os namespaces dos arquivos baixados na pasta vendor. Com isso basta utilizarmos.
Crie um arquivo chamado index.php e inclua o autoloader do composer conforme o exemplo abaixo.
<?php header('Content-Type: text/html; charset=utf-8'); require 'vendor/autoload.php';
Importante que esteja definido que o conteúdo será exibido utilizando a codificação UTF-8 pois problemas podem ocorrer no tratamento de caracteres especiais como acentuações.
Com isso em mãos, basta apenas utlizarmos nosso slug.php.
$slugifier = new \Slug\Slugifier(); // Definindo tratamento de caracteres com acentuação $slugifier->setTransliterate(true); $frase = 'Frase com acentuação para teste de criação de slug'; $slug = $slugifier->slugify($frase); echo '<b>Frase natural: </b>' . $frase . "<br /><br />"; echo '<b>Frase com aplicação de slug: </b>' . $slug . "<br /><br />";
Perfeito, agora basta exibir no seu browser ou mesmo via terminal.
Acessando nosso localhost através de um browser o resultado será este
Complementando
O comando php composer.phar install é utilizado somente uma vez em seu repositório. Para qualquer alteração do _composer.json_ que caracteriza-se como uma nova dependência ou remoção de uma existente deve ser utilizado o comando php composer.phar update.
O composer ainda possui um self-update em que baixa a sua última versão. Normalmente ao rodar qualquer comando você verá uma mensagem dizendo que a sua versão do composer precisa ser atualizada. Para isto basta o comando php composer.phar self-update.
Finalizando
O composer está se tornando a cada dia mais utilizado entre desenvolvedores e vale muito a pena se aprofundar no assunto.
O código-fonte deste exemplo está no github para eventuais consultas neste link.