Composer Dependency manager
Fotografem, comentem, Twittem! @VitorMattosRJ
Desenvolvedor PHP desde 2003 Amante de opensource Evangelista PHP PHP Zend Certified Engineer ( ZEND024235 ) PHPRio ( https://telegram.me/phprio ) Redes sociais: ( procure por vitormattos ) Quem sou eu?
Falaremos sobre...
Só que não
Roteiro ● Introdução e breve histórico ● Uso do packagist como consumidor ● Criação de um pacote (tornando-se um mantenedor) ● Formas de distribuir este pacote ● Criação de scripts
Resumindo a palestra https://getcomposer.org
O que é Composer e para que serve? Ferramenta para gestão de dependências em projetos PHP inspirado no npm (node JS) e bundler (do Ruby) Isola dependências externas evitando necessidade de versionamento das mesmas (vendor)
O que é Composer e para que serve? Ferramenta para gestão de dependências em projetos PHP inspirado no npm (node JS) e bundler (do Ruby) Isola dependências externas evitando necessidade de versionamento das mesmas (vendor)
O que são dependências? Todo artefato de software seu ou de terceiros cuja finalidade é o reaproveitamento de código.
Voltando: O que é Composer e para que serve? Ferramenta para gestão de dependências em projetos PHP inspirado no npm (node JS) e bundler (do Ruby) Declaração de quais são todas as dependências externas e suas versões (composer.json) Isola dependências externas evitando necessidade de versionamento das mesmas (vendor) Possui um agregador de repositórios central Possibilidade de uso de repositório descentralizado Responsabilidade única das partes do projeto
O que é Composer e para que serve? Você declara somente o que VOCÊ precisa O Composer encontra as bibliotecas declaradas e as instala com todas as suas dependências satisfeitas. Reduz o tamanho dos projetos Reduz esforço Facilita redistribuição de projetos E muito mais!
Um pouco de história Suporte a namespaces no PHP lançado no PHP 5.3 em 2009 Surgimento do PHP-FIG em 2013 Lançamento da PSR-0 com primeiras definições de autoload Criação do Composer em 2013 após o PHP-FIG Adoção do composer por parte de grandes frameworks e ferramentas Lançamento da PSR-4 com melhorias nas definições de autoload em 2014
Partes envolvidas
Partes envolvidas lib
Partes envolvidas consumidor da lib lib
Partes envolvidas consumidor da lib lib Mantenedor da lib
Partes envolvidas consumidor da lib lib Mantenedor da lib Packagist
Partes envolvidas consumidor da lib lib Mantenedor da lib Packagist
Visão do consumidor: instalação É feito em PHP Exige no mínimo PHP 5.3.2 Baixe do site do composer Funciona em qualquer plataforma Mais informações: https://getcomposer.org/doc/00-intro.md
Visão do consumidor: instalação Vamos instalar… Local: curl -s http://getcomposer.org/installer | php Global: curl -s http://getcomposer.org/installer | php -- --install-dir=/home/vitor/.bin --filename=composer Ou: sudo apt install composer
Visão do consumidor: atualização manual Caso tenha baixado manualmente, precisa atualizar manualmente: composer selfupdate https://getcomposer.org/doc/03-cli.md#self-update-selfupdate-
O que é um phar? Simples: phar = PHP Archive http://php.net/phar
O que é um JSON? JSON, um acrônimo para "JavaScript Object Notation", é um formato leve para intercâmbio de dados computacionais. JSON é um subconjunto da notação de objeto de JavaScript, mas seu uso não requer JavaScript exclusivamente. O formato JSON foi originalmente criado por Douglas Crockford e é descrito no RFC 4627. O media-type oficial do JSON é application/json e a extensão é.json. JSON Mais em Wikipedia (PT)
O que é um JSON? JSON, de forma resumida, é uma linguagem para formatar dados de forma leve e legível para humanos. Sua estrutura é bem simples e de fácil aprendizado. Ela permite estruturar e formatar os dados em objetos.
composer.json - estrutura básica - sua partitura { "require": { "vlucas/phpdotenv": "^2.4" } }
Instalando a primeira dependência Crie um arquivo composer.json e coloque a sua dependência nele: { "require": { "vlucas/phpdotenv": "^2.4" } }
Instalando a primeira dependência Crie um arquivo composer.json e coloque a sua dependência nele: { "require": { "vlucas/phpdotenv": "^2.4" } }
Instalando a primeira dependência composer require <maintainer>/<dependency> Exemplo:
O que acontece após instalar? Arquivos criados: composer.json Informações diversas sobre seu projeto, dependências instaladas, etc composer.lock Todas as versões que foram instaladas vendor Todas as dependências instaladas
Gitignore O que devemos ignorar?
Usando dependências <?php use CocurSlugifySlugify; require_once 'vendor/autoload.php'; if(file_exists('.env')) { $dotenv = new DotenvDotenv(__DIR__); $dotenv->load(); } echo getenv('TESTE'); echo "n"; $string = 'Minicurso Composer!'; $slug = new Slugify(); echo $slug->slugify($string); echo "n";
composer.lock Fixa as versões a serem instaladas garantindo que suas dependências e suas subdependências estão exatamente nas mesmas versões Sempre versione este arquivo!
Require e require-dev Require é apenas para ambiente de produção Require-dev é apenas para amiente de desenvolvimento: Exemplo: phpunit, behat, phpcs, etc
Require e require-dev Para ambiente de desenvolvimento: composer install Para ambiente de produção: composer install --no-dev Exemplo: composer require phpunit/phpunit --dev
Versionamento semântico 1 major 2 minor 3 patch
Versionamento semântico 1 major 2 minor 3 patch Bugfixes
Versionamento semântico 1 major 2 minor 3 patch Bugfixes Novas funcionalidades
Versionamento semântico 1 major 2 minor 3 patch Bugfixes Novas funcionalidades Mudança de arquitetura
Instalar ou atualizar? Instalar sempre, atualizar apenas quando necessitar atualizar a versão das dependências
E se encontrar um bug? Fork, corrija e use a correção Exemplo: "repositories" : [{ "type" : "vcs", "url" : "https://github.com/vitormattos/oasis-mson-parser" } ]
Estrutura do composer.json Exemplo: Phpunit, blueprint-sdk-maker
Indo para produção composer install --prefer-dist --no-dev --optimize-autoload
Um bom caminho http://phppackagechecklist.com
Perguntas vitor.mattos@phprio.org linkedin.com/in/vitormattos

Composer dependency manager