Upload
vitor-mattos
View
157
Download
0
Embed Size (px)
Citation preview
ComposerDependency 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 palestrahttps://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óriaSuporte 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çãoVamos 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 manualCaso 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ênciaCrie um arquivo composer.json e coloque a sua dependência nele:
{
"require": {
"vlucas/phpdotenv": "^2.4"
}
}
Instalando a primeira dependênciaCrie um arquivo composer.json e coloque a sua dependência nele:
{
"require": {
"vlucas/phpdotenv": "^2.4"
}
}
Instalando a primeira dependênciacomposer 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
GitignoreO que devemos ignorar?
Usando dependências<?phpuse Cocur\Slugify\Slugify;
require_once 'vendor/autoload.php';
if(file_exists('.env')) { $dotenv = new Dotenv\Dotenv(__DIR__); $dotenv->load();}
echo getenv('TESTE');echo "\n";
$string = 'Minicurso Composer!';$slug = new Slugify();echo $slug->slugify($string);echo "\n";
composer.lockFixa 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-devRequire é apenas para ambiente de produção
Require-dev é apenas para amiente de desenvolvimento:Exemplo: phpunit, behat, phpcs, etc
Require e require-devPara ambiente de desenvolvimento:
composer install
Para ambiente de produção:
composer install --no-dev
Exemplo:
composer require phpunit/phpunit --dev
Versionamento semântico
1major
2minor
3patch
Versionamento semântico
1major
2minor
3patch
Bugfixes
Versionamento semântico
1major
2minor
3patch
BugfixesNovas funcionalidades
Versionamento semântico
1major
2minor
3patch
BugfixesNovas 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.jsonExemplo:
Phpunit, blueprint-sdk-maker
Indo para produçãocomposer install --prefer-dist --no-dev --optimize-autoload
Um bom caminhohttp://phppackagechecklist.com
linkedin.com/in/vitormattos