Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP

Gerenciamento de Pacotes Fácil Com Composer

by
Difficulty:IntermediateLength:ShortLanguages:

Portuguese (Português) translation by thierry rene matos (you can also view the original English article)

Vamos encarar: PHP tem tido um historico pedregoso com gerenciamento de pacotes, e como resultado, é muito raro encontrar um desenvolvedor que ativamente usa sistemas como PEAR. Ao invés disso, a maioria dos desenvolvedores tem escolhido seus frameworks favoritos que tem códigos escritos especificamente para resolver várias coisas, como interação com BD, ORMs, OAuth, integração Amazon S3, etc.

A desvantagem aqui, no entanto, é que trocar de framework (ou mudar para não usar framework nenhum) pode ser um pesadelo, porque envolve reaprender tudo para usar um monte de novas ferramentas - e isto não é uma tarefa fácil. Bem, Composer pode resolver isso!


Introdução

"A cola entre todos os projetos"

Composer se apresenta para resolver essa situação se posicionando como "a cola entre todos os projetos" - isto significa que os pacotes podem ser escritos, desenvolvidos e compartilhados em um formato que outros desenvolvedores podem plugar em suas aplicações com facilidade.

Este artigo se apresenta para mostrar como instalar e trabalhar com pacotes Composer. Ao final deste artigo, você será apto a plugar e usar um bando de código em qualquer framework, não importa se você trabalhe com CodeIgniterFuelPHPLaravelSymfony2LithiumYiiZend ... ou qualquer outra coisa.


Primeiro passo - Instalando o Composer

O Composer tem duas partes lógicas: um repositório que guarda pacotes, e uma aplicação via linha de comando que ajuda a encontrar, baixar, atualizar e compartilhar pacotes.

Instalar a aplicação em qualquer vertente do Unix é simples:

É simples assim! Agora você tem o arquivo composer.phar entre os arquivos do seu projeto, que contém toda a lógica relacionada aos recursos de linha de comando.

Você pode confirmar que ele está instalado executando:

Esse comendo deve apresentar todos os comandos do Composer.

Um preferência minha é executar um comando extra:

Esse comando move o arquivo para a pasta bin, que permite acessar todos os comandos de uma maneira mais simples:

Se você está utilizando Windows, apenas baixe o arquivo e execute no interpretador do PHP - não importe onde este está instalado.


Segundo passo - Entendendo o composer.json

Se você é programador Ruby, já está familiarizado com o Gemfile. Ou, no Node, você deve conhecer o package.json. Da mesma forma, o Composer utiliza o composer.json para setar configurações e pacotes para sua aplicação.

Na sua forma mais básica, o conteúdo do arquivo seria algo do tipo:

Aqui estamos requisitando o pacote "Assetic", criado pelo "kriswallsmith", em qualquer versão. Para especificar uma versão, poderíamos utilizar:

Ou podemos combinar os dois métodos:

Isso via permitir que qualquer atualização pequena seja inclusa, mas não uma atualização para 1.1.0, já que está pode ter mudanças que devem receber atenção especial do desenvolvedor.


Terceiro passo - Requisitos de instalação

Agora que você tem um ou mais pacotes listados no seu arquivo composer.json, você pode executar o comando:

...Ou, se você utilizou minha dica para facilitar o uso do comando em máquinas Unix:

Agora você pode notar os arquivos sendo baixados para uma nova pasta chamada vendor/, na raiz da aplicação. Essa lógica pode ser alterada, utilizando a seguinte configuração:


Quarto passo - Autoloading

Autoloading no PHP foi uma bagunça durante um tempo.

O autoloading no PHP durante um tempo foi uma grande bagunça, já que não existia um padrão de desenvolvimento a ser seguido pelos desenvolvedores. Alguns pacotes, como Smarty, utilizam seu próprio autoloading, alguns desenvolvedores colocam diversas classes em um unico arquivo, ou nomeia arquivos com caixa baixa - é muito aleatório.

PSR-0 é uma padrão, criado pelo PHP Standards Group, para resolver esse problema; o Composer utiliza a PSR-0 por padrão. O Composer utiliza o autoloader da PSR-0, que pode ser incluso no seu projeto com apenas uma linha de código:

Note que se for alterado o caminhado da pasta vendor, aqui também deve ser alterado o mapeamento.

Agora você pode usar o código na sua aplicação: 

Esse é um exemplo de utilização do Assetic. Sim, tem bastante código com namespace, mas isso é para evitar conflitos entre os pacotes. O padrão de nomenclaturas na PSR-0 basicamente é:

Outro exemplo é o pacote Buzz HTTP, que se parece com:

Ele pode parecer um file_get_contents() melhorado, mas suporta qualquer lógica que trabalhe com requisições e repostas HTTP - e note que a presença de namespace é menos intensa.


Quinto passo - Mundo real

Se você quiser ganhar tempo, você pode automatizar todo o processo.

Hoje, a maioria dos projetos guardam as dependências do PHP no próprio repositório; então, se você utiliza o SDK do Facebook, por exemplo, você provavelmente copiou e colou o código do GitHub ou baixou algum arquivo compactado. Depois, você o adicionou no sistema de versões e fez as atualizações.

Essa versão vai ficar no seu código como um arquivo estático, que, em algum momento, você pode esquecer de atualizar - Se você perceber que o Facebook atualizou o SDK. A nova versão do arquivo vai no topo e você também confirmar essas mudanças.

Você pode utilizar o Composer para cuidar das versões, ganhando tempo, executando apenas um update, e confirmando as atualizações. Mas por que tem no seu repositório, códigos que você não precisa lá?

A melhor solução é adicionar a pasta vendors/ na sua lista de ignorados (Referência ao gitignore) e manter o seu código totalmente a parte.  Quando você fizer deploy nos hosts, basta executar o comando composer install ou composer update.

Se você quer ganhar ainda mais tempo, você pode mais ainda o processo, utilizando um host na nuvem, é possível configurar o composer para atualizar sempre que houver mudanças em um dos pacotes.


Resumo

Você vai se deparar muito mais com o Composer por aí, a medida que diversos frameworks PHP utilizam suas integrações; o FuelPHP por exemplo, foi criado como um pacote do Composer, o CodeIgniter vai ter suporte ao autoload, o Symfony2 já utiliza bastante.

O Composer é uma ótima maneira de gerenciar dependências no seu projeto sem precisar instalar extensões PECL, ou copiar e colar vários arquivos. Esse jeito de fazer as coisas já está ultrapassado, além de tomar muito tempo do desenvolvedor.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.