Utilizando - Como usar o Composer - parte 1 Artigo

Conheça os cursos gratuitos do WebDevBr! - Inscreva-se!


Este artigo foi publicado a 4 anos, 2 meses, 3 semanas, 2 dias atrás.

Muito se ouve falar sobre Composer hoje em dia, mas ver na prática o que ele pode te oferecer é algo que só quem busca as coisas certas vai acabar descobrindo sem querer e se maravilhar, e saiba, quem ainda não usa vai começar a usar em breve ou ficar pra traz, e digo isso em relação a frameworks conhecidos como o CakePHP por exemplo, que vai usar na versão 3.x muito mais do que na versão 2.x (você sabia que usava Composer lá?).

Para instalar é muito simples, abrimos o site oficial (https://getcomposer.org/) e na sessão de downloads copiamos um dos comandos e colamos no terminal (vou generalizar aqui, você pode dizer cmd, console, terminal, linha de comando ou como quiser, eu vou chamar terminal não importa o SO que você use) e começar a usar, aqui no blog mesmo tem um artigo (atualizado rescentemente) sobre a instalação e configuração do Composer, não vou entrar neste mérito, já tem muita coisa sobre isso por ai.

Comandos básicos do composer

Quando você começa com um novo projeto utilizando o Composer ou alterando algo em um já antigo vai precisar saber se o seu composer.phar está atualizado com a última versão, se você já o tem a algum tempo no PC e não baixou agora (o control+c e control+v ou instalou globalmente) comece sempre com um self update (quer dizer atualizar eu mesmo), assim:

Gostou deste artigo?

Receba atualizações semanais com novos artigos do WebDevBr e outras dicas!

php composer.phar self-update

Ele vai atualizar se necessário ou avisar que já está atualizado.

A primeira vez que você rodar o Composer ele vai ler um arquivo chamado composer.json (na maioria das vezes, e você vai entender isso depois) e resovler todas as dependências que estiver lá, além de criar autoloads e tudo o que precisar. O primeiro comando a executar sempre que você rodar o Composer pela primeira vez é o install:

php composer.phar install

Ele vai instalar e configurar tudo pra você e isso é incrível quando você começar a entender os bastidores dele (lendo o artigo até o fim).

Agora se você tem um projeto e atualizou algo no seu composer.json o comando a rodar não é mais o install, agora vai precisar do update:

php composer.phar update

Super very easy, no fim do processo (install ou update) ele cria um composer.lock com todas as informações do que foi feito para saber atualizar depois.

Só pra fechar todas as pontas, você pode também querer saber qual a versão do seu composer.phar:

php composer.phar --version

Ele traz até a hora em que a atualização foi publicada, pra conhecer os outros comandos do composer visite este link: https://getcomposer.org/doc/03-cli.md.

E o tal do composer.json

E é aqui que a mágica acontece, aonde setamos todas as dependências, configurações as informações do nosso projeto e nossas próprias informações, vamos por a mão na massa pra você entender.

Dependências

A principal função do Composer é baixar e instalar tudo o que você precisa, para começar isso crie na raiz do seu projeto um arquivo chamado composer.json com o conteúdo:

{
    "require": {
        "php": ">=5.5.*"
    }
}

Esse bloco diz ao Composer que nossa aplicação precisa do PHP da versão maior ou igual (>=) a 5.5.qualqueruma, você ainda pode usar:

  • php: Verifica a versão do PHP
  • hhvm: Verifica a versão do HHVM
  • lib-*: Verifica se a lib informada (no lugar de *) existe e qual versão deve ser utilizada
  • ext-*: Verifica se a extenção PHP informada (no lugar de *) existe e qual versão deve ser utilizada

Note que você pode expecificar uma versão exata, por exemplo a 5.5.15 do PHP, utilizar o * (asteristico) para casar qualquer número e somar isso aos operadores de comparação (>, >=, <, <= e !=, acho que é isso, se faltou algum poste nos comentários). Para saber mais sobre versões no Composer de uma olhada na documentação oficial: https://getcomposer.org/doc/02-libraries.md#tags.

Além de verificar se o ambiente é ideal a aplicação você também pode usar o require para informar quais pacotes você quer utilizar, por exemplo o require do esqueleto do Zend Framework 2 com o Doctrine:

{
    "require": {
        "php": ">=5.3.3",
        "zendframework/zendframework": "2.3.*",
        "doctrine/doctrine-orm-module": "0.*"
    }
}

Claro que ainda tem mais coisa além disso no arquivo, mas estamos falando do require agora.

Alí ele informa que precisa da versão 2.3 mais recente do Zend Framework e a da versão 0 do Doctrine Orm Module mais recente também.

Tenha em mente que todo projeto também é um pacote e vou mostrar como transformar seu projeto em pacote no próximo artigo.

Informações sobre seu projeto

Você ainda pode inserir informações sobre seu projeto no arquivo json, o que fica legal na hora de compartilhar, são dois parametros desta vez, name e description, veja um exemplo com o esqueleto do Zend Framework 2:

{
    "name": "zendframework/skeleton-application",
    "description": "Skeleton Application for ZF2",
}

O parametro name guarda o nome da sua aplicação ou o nome do pacote e o description é onde colocamos a descrição, bem simples não é. Agora o composer.json ja fica mais interessante de se ver, veja:

{
    "name": "zendframework/skeleton-application",
    "description": "Skeleton Application for ZF2",
    "require": {
        "php": ">=5.3.3",
        "zendframework/zendframework": "2.3.*",
        "doctrine/doctrine-orm-module": "0.*"
    }
}

Já sabemos o que é (name), o que faz (description) e o que precisa (require) pra funcionar, ainda podemos acrescentar a licensa de uso (license), um link (homepage) pro usuário visitar e algumas palavras-chave (keywords) pra ajudar o usuário a encontrar outros pacotes que tenham alguma relação com o que você está trabalhando (utilizando o comando php composer.phar search my keywords), veja como ficaria:

{
    "name": "zendframework/skeleton-application",
    "description": "Skeleton Application for ZF2",
    "license": "BSD-3-Clause",
    "keywords": [
        "framework",
        "zf2"
    ],
    "homepage": "http://framework.zend.com/",
    "require": {
        "php": ">=5.3.3",
        "zendframework/zendframework": "2.3.*",
        "doctrine/doctrine-orm-module": "0.*"
    }
}

Bem, este é o arquivo composer.json completo do "Skeleton Application for ZF2", ficou fácil de enteder agora né.

Informações sobre o autor ou equipe

E pra completar, que tal falar que foi você que fez o projeto e o seu email:

{
    "authors": [
        {
            "name": "Erik Figueiredo",
            "email": "falecom@erikfigueiredo.com.br"
        }
    ]
}

Da até pra inserir os dados de uma equipe inteira:

{
    "authors": [
        {
            "name": "Erik Figueiredo",
            "email": "falecom@erikfigueiredo.com.br"
        },
        {
            "name": "Colaborador Dois",
            "email": "col2@mportfolio.uk.br"
        },
        {
            "name": "Colaborador Três",
            "email": "col3@antipog.com.br"
        }
    ]
}

E se essa equipe tivesse criado o Skeleton Application for ZF2 o composer.json ficaria assim:

{
    "name": "zendframework/skeleton-application",
    "description": "Skeleton Application for ZF2",
    "license": "BSD-3-Clause",
    "keywords": [
        "framework",
        "zf2"
    ],
    "homepage": "http://framework.zend.com/",
    "authors": [
        {
            "name": "Erik Figueiredo",
            "email": "falecom@erikfigueiredo.com.br"
        },
        {
            "name": "Colaborador Dois",
            "email": "col2@mportfolio.uk.br"
        },
        {
            "name": "Colaborador Três",
            "email": "col3@antipog.com.br"
        }
    ]
    "require": {
        "php": ">=5.3.3",
        "zendframework/zendframework": "2.3.*",
        "doctrine/doctrine-orm-module": "0.*"
    }
}

Intalando o primeiro pacote com Composer

Agora que sabemos como o composer trabalha vamos instalar um pacote, eu escolhi instalar o CakePHP 3, que no momento em que eu escrevia este artigo estava em desenvolvimento ainda, ou seja, não estável.

Como o Composer só instala pacotes marcados como estáveis, se rodarmos o composer.json a seguir ele vai retornar um erro:

{
    "require" : {
        "cakephp/app" : "dev-master"
    }
}

Precisamos então informar para o Composer que ele pode instalar pacotes que estejam em desenvolvimento, ou seja, marcados como dev usando o minimum-stability (ou estabilidade mínima), veja como fica:

{
    "minimum-stability":"dev",
    "require" : {
        "cakephp/app" : "dev-master"
    }
}

Agora ao dar um install neste arquivo ele vai baixar o esqueleto do CakePHP (sim, agora o CakePHP também tem um esqueleto, igual o Zend Framework) e ver que ele também tem um composer.json e vair abrir para baixar todas as dependências dele, se algum pacote dentro deste segundo composer.json tiver outro composer.jso ele vai repetir o processo para este terceiro arquivo, e assim até resolver todas as dependências necessárias para o CakePHP Application Skeleton esteja funcionando.

Claro que o processo acima vai instalar o CakePHP Application Skeleton dentro de um diretório vendor, o que ajudou a entender a didática da coisa mas não configura certinho, pra não sofrer basta rodar o comando abaixo lembrando de colocar o nome do diretório que vai instalar o CakePHP Application Skeleton no lugar de [app_name], ou remova esta parte para criar um diretório app e jogar tudo lá dentro por padrão.

php composer.phar create-project -s dev cakephp/app [app_name]

O parâmetro -s com o valor dev (-s dev) faz o mesmo que o minimum-stability, ou seja, seta minimum-stability como dev.

Simples assim.

Este é o primeiro artigo de uma série curta de 2 artigos sobre o Composer, no próximo vamos falar sobre como criar um repositório para nossos projetos no Composer.

É isso ai e até a próxima.


Cursos relacionados


* Parcelamento apenas cartão de crédito! Pode haver uma pequena variação no parcelamento em relação a simulações apresentadas!