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.
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 é:
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.
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.
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.