Programação / PHP

Conheça o composer e saiba como ele pode ser útil gerenciando as dependências do seu projeto

Antes de colocar a mão na massa, é importante saber o real propósito da ferramenta composer e ainda quando ela pode lhe ser útil

Por Gustavo Web

Publicado por Gustavo Web
em 01/08/2017 às 08h00

Lista VIP UpInside

Entre para nossa lista VIP e receba vídeo aulas, artigos e tutoriais exclusivos e com prioridade

  QUERO ENTRAR
Compartilhe:

Salve salve galera, Gustavo Web aqui e nesse artigo vamos ver o tal do composer!

Essa ferramenta está sendo cada vez mais citada e utilizada pelos frameworks php que temos disponíveis no mercado, e o objetivo desse artigo é desconstruir pelo menos uma etapa do que você precisa conhecer sobre o composer para trabalhar com esse tipo de funcionalidade.

A primeira "etapa" que me refiro é saber o porque e pra que! O como a gente pode aplicar nos próximos artigo, basta me informar aqui abaixo na área de comentários se você quer saber mais como funciona, e eu posso desenvolver uma série de artigos e criar alguns projetos utilizando a estrutura que o composer fornece.

Dependência:

Antes de seguir com o conteúdo, vamos primeiro nos sincronizar do conceito que temos sobre dependência:

Na maior partes do tempo usamos dependências na nossa aplicação, mesmo que a gente crie essas dependências... Até ai não há com o que se preocupar, mas a partir do momento que você depende de código de terceiros, é que surge a necessidade de ter um controle mais rigoso e simplificado.

public function execCompra(){

$cliente = $this->user;

$compra = new PagSeguro();
$compra->criaFatura();

if ($compra->faturaPaga() == true) {

$lead = new InfusionSoft();
$lead->addTag('buy_product', $this->user->email);

}
}

Claro que o exemplo acima é fictício, mas é somente para que você compreenda! O nosso método depende do perfeito funcionamento da Lib do PagSeguro que é o meio de pagamento e da Lib do InfusionSoft para marcar uma tag no nosso sistema de e-mail.

Agora algumas perguntas pertinentes:

O que é:

Composer é uma ferramenta que quando adicionada ao seu projeto php, controla e gerencia as dependências do projeto, sejam dependências suas ou de terceiros! A principal vantagem é a padronização do projeto, geração do autoloader e o controle de versão de cada dependência.

Pra que:

Provavelmente em algum momento, sua aplicação precisará se comunicar com ferramentas externas (orm, meios de pagamentos, e-mail marketing, sistema de logística, erp's, crm's...) e na grande maioria das vezes as empresas responsáveis por tais aplicações com a qual você vai se conectar, fornece uma integração (uma lib - library) na mesma linguagem que você está utilizando (que no caso estamos nos referindo ao PHP, javascript até o momento não entra nessa arquitetura).

É bem possível que você tenha que se conectar com mais de uma ferramenta ao mesmo tempo, e o composer surge para padronizar a organização dessas libs e gerar um autoload com o recurso já ativo dentro da sua aplicação. Como resultado disso, você tem de uma maneira bem mais organizada de ter todas as suas dependências já ativas e funcionais dentro da sua aplicação.

Todo esse controle que estou citando é controlado somente por um arquivo de configuração do composer do seu projeto! Você só pode ter um arquivo desse de configuração por projeto.

O composer irá ler esse arquivo de configuração do seu projeto e se encarrega de efetuar o download de todas suas dependências já na versão especificada e adicionar a entrada dentro do seu autoloader, com isso basta você adicionar um require('autoload.php') e já está tudo certo para programar.

Nesse formato, seu projeto passa a ter a famosa pasta vendor! É nessa pasta que fica concentrada as suas libs externas, e é claro que você pode configurar o seu composer para que seu projeto tenha outro nome... Mas aí já fica a critério do desenvolvedor :)

Quando trabalhar com composer:

É claro que não tem uma regra para isso! Mas geralmente você vai utilizar no seu projeto caso queira utilizar ferramentas externas e trabalhar de fato com dependência! No nosso caso aqui na UP não trabalhamos com dependências no geral... As nossas integrações, no geral executamos o download da lib e criamos classes personalizadas para interagir com as ferramentas externas. Um exemplo disso temos no Work Control® (CMS FullStack da Up), onde nativamente há a integração com o PagSeguro, mas há uma classe responsável (que por sua vez concentra toda a integração) por fazer a comunicação entre a lib oficial do PagSeguro e a nossa aplicação.

Trabalhamos nesse formato, pois o foco do WC é entregar uma solução personalizada sob medida e que de fato atenda as necessidades do cliente... E utilizando uma ferramenta como o composer vai ajudando muuuito o desenvolvedor a ser mais ágil, mas pode acabar limitando as funcionalidades que poderiam ser desenvolvidas, ou ainda, essa dependência ficar tão espalhada dentro do sistema, que numa atualização (que não seja retrocompatível) pode acabar causando um baita transtorno!

Conclusão:

Como sempre digo, nunca se tem somente uma resposta para a solução do problema... E aqui não é diferente! Trabalhando com o composer ou não, você pode ter consequências já previstas em cada um dos modelos. Estamos planejando internamente aqui, lançar uma versão 4.0 do WC já apto para trabalhar com o composer, mas ainda tendo uma camada extra entre a aplicação e a ferramenta externa para extrair o melhor de ambos modelos! Isso ainda está em fase de especulação, mas poderia ser uma alternativa :)

Nos próximos capítulos...

Vou me programar para criar uma sequência de artigos sobre o composer, e nos próximos post vamos subir o ambiente! Já lhe adianto... Desenvolvedor tinha que ser obrigatório a trabalhar com Unix! Tanto o Linux quanto o iOS tem algumas ferramentas úteis que fazem você ser bem mais produtivo, além de estar mais próximo do ambiente de produção. Você vai ver por exemplo que uma instalação utilizando o CURL é bem tranquilo e você faz isso com duas linhas de comando e já estará tudo pronto... No windows, é mais complicado (por incrível que pareça).

Alguns pontos que fazem os sistemas Unix serem mais atrativos para desenvolvimento:

Você pode sim executar as mesmas funcionalidades no Windows, mas requer procedimentos e configurações a mais para atingir um nível mais próximo de desenvolvimento do ambiente Unix.

E você?

Me fala o que prefere! Pra qual lado você acredita ser o mais viável? Já trabalha com o composer em algum projeto? Qual tem sido sua experiência?

Compartilhe:

Em Programação:

Deixe seu comentário: