Composer dependency manager - TDC - POA 2017
-
Upload
vitor-mattos -
Category
Technology
-
view
83 -
download
0
Transcript of Composer dependency manager - TDC - POA 2017
![Page 1: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/1.jpg)
ComposerDependency manager
Porto Alegre / 2017
![Page 2: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/2.jpg)
Fotografem, comentem, Twittem!
@VitorMattosRJ
![Page 3: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/3.jpg)
![Page 4: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/4.jpg)
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?
![Page 5: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/5.jpg)
Falaremos sobre...
![Page 6: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/6.jpg)
Só que não
![Page 7: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/7.jpg)
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
![Page 8: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/8.jpg)
Resumindo a palestrahttps://getcomposer.org
![Page 9: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/9.jpg)
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)
![Page 10: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/10.jpg)
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)
![Page 11: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/11.jpg)
O que são dependências?Todo artefato de software seu ou de terceiros cuja finalidade é o reaproveitamento de código.
![Page 12: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/12.jpg)
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
![Page 13: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/13.jpg)
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!
![Page 14: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/14.jpg)
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
![Page 15: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/15.jpg)
Partes envolvidas
![Page 16: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/16.jpg)
Partes envolvidas
lib
![Page 17: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/17.jpg)
Partes envolvidas
consumidor da lib
lib
![Page 18: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/18.jpg)
Partes envolvidas
consumidor da lib
lib
Mantenedor da lib
![Page 19: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/19.jpg)
Partes envolvidas
consumidor da lib
lib
Mantenedor da lib
Packagist
![Page 20: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/20.jpg)
Partes envolvidas
consumidor da lib
lib
Mantenedor da lib
Packagist
![Page 21: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/21.jpg)
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
![Page 22: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/22.jpg)
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
![Page 23: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/23.jpg)
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-
![Page 24: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/24.jpg)
O que é um phar?Simples:
phar = PHP Archive
http://php.net/phar
![Page 25: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/25.jpg)
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)
![Page 26: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/26.jpg)
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.
![Page 27: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/27.jpg)
composer.json - estrutura básica - sua partitura{
"require": {
"vlucas/phpdotenv": "^2.4"
}
}
![Page 28: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/28.jpg)
Instalando a primeira dependênciaCrie um arquivo composer.json e coloque a sua dependência nele:
{
"require": {
"vlucas/phpdotenv": "^2.4"
}
}
![Page 29: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/29.jpg)
Instalando a primeira dependênciaCrie um arquivo composer.json e coloque a sua dependência nele:
{
"require": {
"vlucas/phpdotenv": "^2.4"
}
}
![Page 30: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/30.jpg)
Instalando a primeira dependênciacomposer require <maintainer>/<dependency>
Exemplo:
![Page 31: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/31.jpg)
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
![Page 32: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/32.jpg)
GitignoreO que devemos ignorar?
![Page 33: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/33.jpg)
Usando dependências
![Page 34: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/34.jpg)
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!
![Page 35: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/35.jpg)
Require e require-devRequire é apenas para ambiente de produção
Require-dev é apenas para amiente de desenvolvimento:Exemplo: phpunit, behat, phpcs, etc
![Page 36: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/36.jpg)
Require e require-devPara ambiente de desenvolvimento:
composer install
Para ambiente de produção:
composer install --no-dev
Exemplo:
composer require phpunit/phpunit --dev
![Page 37: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/37.jpg)
Versionamento semântico
1major
2minor
3patch
![Page 38: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/38.jpg)
Versionamento semântico
1major
2minor
3patch
Bugfixes
![Page 39: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/39.jpg)
Versionamento semântico
1major
2minor
3patch
BugfixesNovas funcionalidades
![Page 40: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/40.jpg)
Versionamento semântico
1major
2minor
3patch
BugfixesNovas funcionalidades
Mudança de arquitetura
![Page 41: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/41.jpg)
Versionamento semântico - exemplos
● 1.0.0● 1.0.2● 1.1.0● 0.2.5● 1.0.0-dev● 1.0.0-alpha3● 1.0.0-beta2● 1.0.0-RC5● v2.0.4-p1
![Page 42: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/42.jpg)
Instalar ou atualizar?Instalar sempre, atualizar apenas quando necessitar atualizar a versão das dependências
![Page 43: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/43.jpg)
Estrutura do composer.jsonExemplo:
Phpunit, blueprint-sdk-maker
![Page 44: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/44.jpg)
Estrutura do composer.json <- Mantenedor da lib{
"name" : "vitormattos/blueprint-sdk-maker",
"description" : "Create SDK client from API Blueprint",
"license" : "MIT",
"type" : "library",
"homepage" : "https://github.com/vitormattos/blueprint-sdk-maker",
"authors" : [{
"name" : "Vitor Mattos",
"homepage" : "https://github.com/vitormattos"
}
],
"support" : {
"source" : "https://github.com/vitormattos/blueprint-sdk-maker/tree/master",
"issues" : "https://github.com/vitormattos/blueprint-sdk-maker/issues"
},
"keywords" : [
"api",
"blueprint",
"parser",
"apib"
],
![Page 45: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/45.jpg)
Estrutura do composer.json{
"name" : "vitormattos/blueprint-sdk-maker",
"description" : "Create SDK client from API Blueprint",
"license" : "MIT",
"type" : "library",
"homepage" : "https://github.com/vitormattos/blueprint-sdk-maker",
"authors" : [{
"name" : "Vitor Mattos",
"homepage" : "https://github.com/vitormattos"
}
],
"support" : {
"source" : "https://github.com/vitormattos/blueprint-sdk-maker/tree/master",
"issues" : "https://github.com/vitormattos/blueprint-sdk-maker/issues"
},
"keywords" : [
"api",
"blueprint",
"parser",
"apib"
],
![Page 46: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/46.jpg)
Estrutura do composer.json{
"name" : "vitormattos/blueprint-sdk-maker",
"description" : "Create SDK client from API Blueprint",
"license" : "MIT",
"type" : "library",
"homepage" : "https://github.com/vitormattos/blueprint-sdk-maker",
"authors" : [{
"name" : "Vitor Mattos",
"homepage" : "https://github.com/vitormattos"
}
],
"support" : {
"source" : "https://github.com/vitormattos/blueprint-sdk-maker/tree/master",
"issues" : "https://github.com/vitormattos/blueprint-sdk-maker/issues"
},
"keywords" : [
"api",
"blueprint",
"parser",
"apib"
],
Nome do pacote
![Page 47: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/47.jpg)
Estrutura do composer.json{
"name" : "vitormattos/blueprint-sdk-maker",
"description" : "Create SDK client from API Blueprint",
"license" : "MIT",
"type" : "library",
"homepage" : "https://github.com/vitormattos/blueprint-sdk-maker",
"authors" : [{
"name" : "Vitor Mattos",
"homepage" : "https://github.com/vitormattos"
}
],
"support" : {
"source" : "https://github.com/vitormattos/blueprint-sdk-maker/tree/master",
"issues" : "https://github.com/vitormattos/blueprint-sdk-maker/issues"
},
"keywords" : [
"api",
"blueprint",
"parser",
"apib"
],
Nome do pacoteDescrição
![Page 48: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/48.jpg)
Estrutura do composer.json{
"name" : "vitormattos/blueprint-sdk-maker",
"description" : "Create SDK client from API Blueprint",
"license" : "MIT",
"type" : "library",
"homepage" : "https://github.com/vitormattos/blueprint-sdk-maker",
"authors" : [{
"name" : "Vitor Mattos",
"homepage" : "https://github.com/vitormattos"
}
],
"support" : {
"source" : "https://github.com/vitormattos/blueprint-sdk-maker/tree/master",
"issues" : "https://github.com/vitormattos/blueprint-sdk-maker/issues"
},
"keywords" : [
"api",
"blueprint",
"parser",
"apib"
],
Nome do pacoteDescrição
Licença
![Page 49: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/49.jpg)
Estrutura do composer.json{
"name" : "vitormattos/blueprint-sdk-maker",
"description" : "Create SDK client from API Blueprint",
"license" : "MIT",
"type" : "library",
"homepage" : "https://github.com/vitormattos/blueprint-sdk-maker",
"authors" : [{
"name" : "Vitor Mattos",
"homepage" : "https://github.com/vitormattos"
}
],
"support" : {
"source" : "https://github.com/vitormattos/blueprint-sdk-maker/tree/master",
"issues" : "https://github.com/vitormattos/blueprint-sdk-maker/issues"
},
"keywords" : [
"api",
"blueprint",
"parser",
"apib"
],
Nome do pacoteDescrição
Licença
Autores
![Page 50: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/50.jpg)
Estrutura do composer.json{
"name" : "vitormattos/blueprint-sdk-maker",
"description" : "Create SDK client from API Blueprint",
"license" : "MIT",
"type" : "library",
"homepage" : "https://github.com/vitormattos/blueprint-sdk-maker",
"authors" : [{
"name" : "Vitor Mattos",
"homepage" : "https://github.com/vitormattos"
}
],
"support" : {
"source" : "https://github.com/vitormattos/blueprint-sdk-maker/tree/master",
"issues" : "https://github.com/vitormattos/blueprint-sdk-maker/issues"
},
"keywords" : [
"api",
"blueprint",
"parser",
"apib"
],
Nome do pacoteDescrição
Licença
Autores
Dados de suporte
![Page 51: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/51.jpg)
Estrutura do composer.json{
"name" : "vitormattos/blueprint-sdk-maker",
"description" : "Create SDK client from API Blueprint",
"license" : "MIT",
"type" : "library",
"homepage" : "https://github.com/vitormattos/blueprint-sdk-maker",
"authors" : [{
"name" : "Vitor Mattos",
"homepage" : "https://github.com/vitormattos"
}
],
"support" : {
"source" : "https://github.com/vitormattos/blueprint-sdk-maker/tree/master",
"issues" : "https://github.com/vitormattos/blueprint-sdk-maker/issues"
},
"keywords" : [
"api",
"blueprint",
"parser",
"apib"
],
Nome do pacoteDescrição
Licença
Autores
Dados de suporte
Palavras chaves
![Page 52: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/52.jpg)
Estrutura do composer.json "autoload" : {
"psr-4" : {
"BlueprintSdkMaker\\" : "src/Sdk"
}
},
"require" : {
"php" : ">=7",
"symfony/console" : "^3.2",
"brianseitel/oasis-mson-parser" : "dev-newest"
},
"require-dev" : {
"nikic/php-parser" : "^3.0",
"phpunit/phpunit" : "^6.1",
"squizlabs/php_codesniffer" : "^3.0",
"overtrue/phplint" : "^0.2.1",
"satooshi/php-coveralls" : "^1.0",
"phpstan/phpstan" : "^0.7.0"
},
![Page 53: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/53.jpg)
Estrutura do composer.json "autoload" : {
"psr-4" : {
"BlueprintSdkMaker\\" : "src/Sdk"
}
},
"require" : {
"php" : ">=7",
"symfony/console" : "^3.2",
"brianseitel/oasis-mson-parser" : "dev-newest"
},
"require-dev" : {
"nikic/php-parser" : "^3.0",
"phpunit/phpunit" : "^6.1",
"squizlabs/php_codesniffer" : "^3.0",
"overtrue/phplint" : "^0.2.1",
"satooshi/php-coveralls" : "^1.0",
"phpstan/phpstan" : "^0.7.0"
},
Autoload
![Page 54: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/54.jpg)
Estrutura do composer.json "autoload" : {
"psr-4" : {
"BlueprintSdkMaker\\" : "src/Sdk"
}
},
"require" : {
"php" : ">=7",
"symfony/console" : "^3.2",
"brianseitel/oasis-mson-parser" : "dev-newest"
},
"require-dev" : {
"nikic/php-parser" : "^3.0",
"phpunit/phpunit" : "^6.1",
"squizlabs/php_codesniffer" : "^3.0",
"overtrue/phplint" : "^0.2.1",
"satooshi/php-coveralls" : "^1.0",
"phpstan/phpstan" : "^0.7.0"
},
Autoload
Namespace
![Page 55: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/55.jpg)
Estrutura do composer.json "autoload" : {
"psr-4" : {
"BlueprintSdkMaker\\" : "src/Sdk"
}
},
"require" : {
"php" : ">=7",
"symfony/console" : "^3.2",
"brianseitel/oasis-mson-parser" : "dev-newest"
},
"require-dev" : {
"nikic/php-parser" : "^3.0",
"phpunit/phpunit" : "^6.1",
"squizlabs/php_codesniffer" : "^3.0",
"overtrue/phplint" : "^0.2.1",
"satooshi/php-coveralls" : "^1.0",
"phpstan/phpstan" : "^0.7.0"
},
Autoload
Namespace
Require
![Page 56: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/56.jpg)
Estrutura do composer.json "autoload" : {
"psr-4" : {
"BlueprintSdkMaker\\" : "src/Sdk"
}
},
"require" : {
"php" : ">=7",
"symfony/console" : "^3.2",
"brianseitel/oasis-mson-parser" : "dev-newest"
},
"require-dev" : {
"nikic/php-parser" : "^3.0",
"phpunit/phpunit" : "^6.1",
"squizlabs/php_codesniffer" : "^3.0",
"overtrue/phplint" : "^0.2.1",
"satooshi/php-coveralls" : "^1.0",
"phpstan/phpstan" : "^0.7.0"
},
Autoload
Namespace
Require
Require dev
![Page 57: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/57.jpg)
Estrutura do composer.json "autoload" : {
"psr-4" : {
"BlueprintSdkMaker\\" : "src/Sdk"
}
},
"require" : {
"php" : ">=7",
"symfony/console" : "^3.2",
"brianseitel/oasis-mson-parser" : "dev-newest"
},
"require-dev" : {
"nikic/php-parser" : "^3.0",
"phpunit/phpunit" : "^6.1",
"squizlabs/php_codesniffer" : "^3.0",
"overtrue/phplint" : "^0.2.1",
"satooshi/php-coveralls" : "^1.0",
"phpstan/phpstan" : "^0.7.0"
},
![Page 58: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/58.jpg)
Estrutura do composer.json "autoload" : {
"psr-4" : {
"BlueprintSdkMaker\\" : "src/Sdk"
}
},
"require" : {
"php" : ">=7",
"symfony/console" : "^3.2",
"brianseitel/oasis-mson-parser" : "dev-newest"
},
"require-dev" : {
"nikic/php-parser" : "^3.0",
"phpunit/phpunit" : "^6.1",
"squizlabs/php_codesniffer" : "^3.0",
"overtrue/phplint" : "^0.2.1",
"satooshi/php-coveralls" : "^1.0",
"phpstan/phpstan" : "^0.7.0"
},
scripts
![Page 59: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/59.jpg)
Estrutura do composer.json "autoload" : {
"psr-4" : {
"BlueprintSdkMaker\\" : "src/Sdk"
}
},
"require" : {
"php" : ">=7",
"symfony/console" : "^3.2",
"brianseitel/oasis-mson-parser" : "dev-newest"
},
"require-dev" : {
"nikic/php-parser" : "^3.0",
"phpunit/phpunit" : "^6.1",
"squizlabs/php_codesniffer" : "^3.0",
"overtrue/phplint" : "^0.2.1",
"satooshi/php-coveralls" : "^1.0",
"phpstan/phpstan" : "^0.7.0"
},
scripts
Agrupando scripts
![Page 60: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/60.jpg)
Estrutura do composer.json "autoload" : {
"psr-4" : {
"BlueprintSdkMaker\\" : "src/Sdk"
}
},
"require" : {
"php" : ">=7",
"symfony/console" : "^3.2",
"brianseitel/oasis-mson-parser" : "dev-newest"
},
"require-dev" : {
"nikic/php-parser" : "^3.0",
"phpunit/phpunit" : "^6.1",
"squizlabs/php_codesniffer" : "^3.0",
"overtrue/phplint" : "^0.2.1",
"satooshi/php-coveralls" : "^1.0",
"phpstan/phpstan" : "^0.7.0"
},
scripts
Binários
Agrupando scripts
![Page 61: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/61.jpg)
Estrutura do composer.json "autoload" : {
"psr-4" : {
"BlueprintSdkMaker\\" : "src/Sdk"
}
},
"require" : {
"php" : ">=7",
"symfony/console" : "^3.2",
"brianseitel/oasis-mson-parser" : "dev-newest"
},
"require-dev" : {
"nikic/php-parser" : "^3.0",
"phpunit/phpunit" : "^6.1",
"squizlabs/php_codesniffer" : "^3.0",
"overtrue/phplint" : "^0.2.1",
"satooshi/php-coveralls" : "^1.0",
"phpstan/phpstan" : "^0.7.0"
},
scripts
Repositórios
Binários
Agrupando scripts
![Page 62: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/62.jpg)
Estrutura do composer.json "autoload" : {
"psr-4" : {
"BlueprintSdkMaker\\" : "src/Sdk"
}
},
"require" : {
"php" : ">=7",
"symfony/console" : "^3.2",
"brianseitel/oasis-mson-parser" : "dev-newest"
},
"require-dev" : {
"nikic/php-parser" : "^3.0",
"phpunit/phpunit" : "^6.1",
"squizlabs/php_codesniffer" : "^3.0",
"overtrue/phplint" : "^0.2.1",
"satooshi/php-coveralls" : "^1.0",
"phpstan/phpstan" : "^0.7.0"
},
scripts
Repositórios
Binários
Agrupando scripts
Tipo de repositório
![Page 63: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/63.jpg)
Scripts - Command Events
● pre-install-cmd: occurs before the install command is executed with a lock file present.● post-install-cmd: occurs after the install command has been executed with a lock file present.● pre-update-cmd: occurs before the update command is executed, or before the install command is executed
without a lock file present.● post-update-cmd: occurs after the update command has been executed, or after the installcommand has been
executed without a lock file present.● post-status-cmd: occurs after the status command has been executed.● pre-archive-cmd: occurs before the archive command is executed.● post-archive-cmd: occurs after the archive command has been executed.● pre-autoload-dump: occurs before the autoloader is dumped, either during install/update, or via the
dump-autoload command.● post-autoload-dump: occurs after the autoloader has been dumped, either during install/update, or via the
dump-autoload command.● post-root-package-install: occurs after the root package has been installed, during the create-project command.● post-create-project-cmd: occurs after the create-project command has been executed.
![Page 64: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/64.jpg)
Scripts - exemplo: Laravel
![Page 65: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/65.jpg)
Publique no packagist
![Page 66: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/66.jpg)
E se encontrar um bug?Fork, corrija e use a correção
Exemplo:
"repositories" : [{"type" : "vcs","url" : "https://github.com/vitormattos/oasis-mson-parser"
}]
![Page 67: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/67.jpg)
Indo para produçãocomposer install --prefer-dist --no-dev --optimize-autoload
![Page 68: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/68.jpg)
Um bom caminho: boas práhttp://phppackagechecklist.com
![Page 69: Composer dependency manager - TDC - POA 2017](https://reader036.fdocuments.us/reader036/viewer/2022062401/5a64eae77f8b9a93328b45b1/html5/thumbnails/69.jpg)