SlideShare ist ein Scribd-Unternehmen logo
1 von 129
Downloaden Sie, um offline zu lesen
Composer 
the right way 
Rafael Dohms 
@rdohms
photo: smileymanwithahat
photo: Rob Allen
www.kickstarter.com/projects/rdohms/the-amsterdamphp-elephpant
photo: 18millionpixels
Library Publisher 
photo: 18millionpixels
Library Publisher 
Library Consumer 
photo: 18millionpixels
Library Publisher 
Library 
Library Consumer 
photo: 18millionpixels
Library Publisher 
Library 
Packagist 
Library Consumer 
photo: 18millionpixels
photo: 18millionpixels
{ 
"require": { 
"monolog/monolog": “2.0” 
} 
} 
photo: 18millionpixels
{ 
"require": { 
"monolog/monolog": “2.0” 
} 
} 
{ 
"name": “monolog/monolog” 
... 
} 
photo: 18millionpixels
{ 
"require": { 
"monolog/monolog": “2.0” 
} 
} 
{ 
"name": “monolog/monolog” 
... 
} 
./composer.json has been updated 
Loading composer repositories with package information 
Updating dependencies (including require-dev) 
Your requirements could not be resolved to an installable set of packages. 
! 
Problem 1 
- The requested package monolog/monolog could not be found in any version, there may be a typo in the package name. 
! 
Potential causes: 
- A typo in the package name 
- The package is not available in a stable-enough version according to your minimum-stability setting 
see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details. 
! 
Read <http://getcomposer.org/doc/articles/troubleshooting.md> for further common problems. 
! 
Installation failed, reverting ./composer.json to its original content. 
photo: 18millionpixels
{ 
"require": { 
___ 
~1.1 
"monolog/monolog": “2.0” 
} 
} 
{ 
"name": “monolog/monolog” 
... 
} 
./composer.json has been updated 
Loading composer repositories with package information 
Updating dependencies (including require-dev) 
Your requirements could not be resolved to an installable set of packages. 
! 
Problem 1 
- The requested package monolog/monolog could not be found in any version, there may be a typo in the package name. 
! 
Potential causes: 
- A typo in the package name 
- The package is not available in a stable-enough version according to your minimum-stability setting 
see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details. 
! 
Read <http://getcomposer.org/doc/articles/troubleshooting.md> for further common problems. 
! 
Installation failed, reverting ./composer.json to its original content. 
photo: 18millionpixels
{ 
"require": { 
___ 
~1.1 
"monolog/monolog": “2.0” 
} 
} 
{ 
"name": “monolog/monolog” 
... 
} 
./composer.json has been updated 
Loading composer repositories with package information 
Updating dependencies (including require-dev) 
Your requirements could not be resolved to an installable set of packages. 
! 
Problem 1 
- Installing psr/log (1.0.0) 
Loading from cache 
! 
- Installing monolog/monolog (1.11.0) 
- The requested package monolog/monolog could not be found in any version, there may be a typo in the package name. 
! 
Downloading: 100% 
Potential causes: 
- A typo in the package name 
- The package is not available in a stable-enough version according to your minimum-stability setting 
! 
monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server) 
[...] 
monolog/see <https://monolog groups.suggests google.installing com/d/ext-topic/mongo composer-(Allow dev/_sending g3ASeIFlrc/log messages discussion> to a for MongoDB more server) 
details. 
monolog/! 
monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB) 
monolog/Read <http://monolog getcomposer.suggests org/installing doc/articles/rollbar/troubleshooting.rollbar (Allow md> sending for further log messages common to problems. 
Rollbar) 
! 
Writing lock file 
Installation Generating autoload failed, files 
reverting ./composer.json to its original content. 
photo: 18millionpixels
composer
! composer.json composer
! composer.json composer 
! composer.lock
! composer.json composer 
! composer.lock
discovery Packagist 
" 
! composer.json composer 
! composer.lock
discovery Packagist source 
" 
Repository 
# 
! composer.json composer 
! composer.lock
discovery source 
installation 
Packagist 
" 
Vendor 
Folder 
$ 
Repository 
# 
! composer.json composer 
! composer.lock
Library Publisher 
$ composer init
Library Publisher 
$ composer init 
Library Consumer 
$ composer require <vendor>/<package>
Tip 
$ composer require monolog/monolog 
Using version ~1.11 for monolog/monolog
Composer for 
Library Publishers
vendor / package 
Library Publisher Unique vendor names
pick your own 
unique vendor 
Library Publisher Unique vendor names
or join a collective 
Library Publisher Unique vendor names
! README 
% CHANGELOG 
& LICENSE 
Library Publisher What’s in your library?
! README 
% CHANGELOG 
& LICENSE 
' What problem does it solve? 
' Usage examples 
' Install instructions 
' How can I contribute? 
Library Publisher What’s in your library?
! README 
% CHANGELOG 
& LICENSE 
' What problem does it solve? 
' Usage examples 
' Install instructions 
' How can I contribute? 
' List relevant changes 
' Make BC breaks prominent 
' Show examples of how to upgrade 
Library Publisher What’s in your library?
! README 
% CHANGELOG 
& LICENSE 
' What problem does it solve? 
' Usage examples 
' Install instructions 
' How can I contribute? 
' List relevant changes 
' Make BC breaks prominent 
' Show examples of how to upgrade 
' Pick one that reflects your values 
' choosealicense.com can help 
Library Publisher What’s in your library?
1 . 2 . 3 
major minor patch 
Library Publisher Semantic Versioning
1 . 2 . 3 
major minor patch 
Library Publisher Semantic Versioning 
Bug Fixes
New Features Bug Fixes 
1 . 2 . 3 
major minor patch 
Library Publisher Semantic Versioning
API / BC Breaks New Features Bug Fixes 
1 . 2 . 3 
major minor patch 
Library Publisher Semantic Versioning
Tag it and Bag it 
Library Publisher Tagging
# Simple Tag 
$ git tag v1.2.3 
! 
! 
! 
# Annotated Tag 
$ git tag -a v1.2.3 -m “Description of Release" 
Library Publisher Tagging
Library Publisher “I'm out" 
photo: jilliancorinne
Library Publisher “I'm out"
Click here and provide another 
Library Publisher “I'm out"
Library Publisher “I'm out"
Library Publisher “I'm out"
Pick the 
correct 
version 
Library Publisher Pick a Version
* the asterisk 
Library Publisher Pick a Version
* the asterisk ○ 
Library Publisher Pick a Version
~ the tilde 
Library Publisher Pick a Version
~1.2 
>=1.2.0, <2.0.0 
Library Publisher Pick a Version
~1.2 
>=1.2.0, <2.0.0 
Library Publisher Pick a Version 
)
~1.2.3 
>=1.2.3, <1.3 
Library Publisher Pick a Version
~1.2.3 
>=1.2.3, <1.3 
Library Publisher Pick a Version 
)
3rd party library 
"require": { 
"zendframework/zend-stdlib": “2.1.*”, 
"zendframework/zend-servicemanager": "2.1.*", 
}, 
! 
“require-dev": { 
“phpunit/phpunit": “~3.7” 
} 
Your application 
"require": { 
"zendframework/zend-stdlib": “~2.3”, 
"zendframework/zend-servicemanager": “~2.3", 
}, 
! 
“require-dev": { 
“phpunit/phpunit": “~4” 
} 
Library Publisher Pick a Version
3rd party library 
"require": { 
"zendframework/zend-stdlib": “2.1.*”, 
"zendframework/zend-servicemanager": "2.1.*", 
}, 
! 
“require-dev": { 
* 
“phpunit/phpunit": “~3.7” 
} 
Your application 
"require": { 
"zendframework/zend-stdlib": “~2.3”, 
"zendframework/zend-servicemanager": “~2.3", 
}, 
! 
“require-dev": { 
“phpunit/phpunit": “~4” 
} 
Library Publisher Pick a Version
3rd party library 
"require": { 
"zendframework/zend-stdlib": “2.1.*”, 
"zendframework/zend-servicemanager": "2.1.*", 
}, 
! 
“require-dev": { 
* 
“phpunit/phpunit": “~3.7” 
} 
Your application 
"require": { 
"zendframework/zend-stdlib": “~2.3”, 
"zendframework/zend-servicemanager": “~2.3", 
}, 
! 
“require-dev": { 
“phpunit/phpunit": “~4” 
} 
Library Publisher Pick a Version
3rd party library 
"require": { 
"zendframework/zend-stdlib": “2.1.*”, 
"zendframework/zend-servicemanager": "2.1.*", 
}, 
! 
“require-dev": { 
* 
“phpunit/phpunit": “~3.7” 
} 
Your application 
"require": { 
"zendframework/zend-stdlib": “~2.3”, 
"zendframework/zend-servicemanager": “~2.3", 
}, 
! 
“require-dev": { 
“phpunit/phpunit": “~4” 
} 
Library Publisher Pick a Version 
~2.1
Composer for 
Library Consumers
install or update? 
Library Consumer Install or update?
Make sure you have 
installed the last 
updates from other 
developers. 
? 
install or update 
Library Consumer Install or update?
Make sure you have 
installed the last 
updates from other 
developers. 
? 
install or update 
Library Consumer Install or update?
Deploying a new 
release of your 
application to 
production. 
? 
install or update 
Library Consumer Install or update?
Deploying a new 
release of your 
application to 
production. 
? 
install or update 
Library Consumer Install or update?
Checked out a new 
project and want to 
start coding. 
? 
install or update 
Library Consumer Install or update?
Checked out a new 
project and want to 
start coding. 
? 
install or update 
Library Consumer Install or update?
Grab new versions for 
the dependencies of 
your project. 
? 
install or update 
Library Consumer Install or update?
Grab new versions for 
the dependencies of 
your project. 
? 
install or update 
Library Consumer Install or update?
Your application 
$ 
Public 
Repository 
# 
! composer.lock 
composer install 
composer update 
Library Consumer Install or update?
Your application 
$ 
Public 
Repository 
# 
! composer.lock 
read 
composer install 
composer update 
Library Consumer Install or update?
Your application 
$ 
read grab version 
Public 
Repository 
# 
! composer.lock 
composer install 
composer update 
Library Consumer Install or update?
Your application 
$ 
read grab version 
Public 
Repository 
# 
! composer.lock 
check latest compatible release 
composer install 
composer update 
Library Consumer Install or update?
Your application 
$ 
read grab version 
Public 
Repository 
# 
! composer.lock 
check latest compatible release 
Library Consumer Install or update? 
update 
composer install 
composer update
commit your lock file 
Library Consumer Install or update?
Tip 
$ composer update --lock 
Library Consumer Install or update?
Pick the 
correct 
version 
Library Consumer Version Selection
dev-master 
Library Consumer Version Selection
Library Consumer Version Selection
Library Consumer Version Selection
found a bug? 
Library Consumer Using forks
Tip 
$ composer install --prefer-source 
Library Consumer Using forks
Library Consumer Using forks
patch it, 
Library Consumer Using forks
patch it, 
fork it, 
Library Consumer Using forks
patch it, 
fork it, 
push it… 
Library Consumer Using forks
patch it, 
fork it, 
push it… 
wait for it. 
Library Consumer Using forks
patch it, 
fork it, 
push it… 
wait for it. 
Library Consumer Using forks
symfony/symfony 
Library Consumer Using forks
symfony/symfony 
Library Consumer Using forks 
rdohms/symfony
symfony/symfony 
Library Consumer Using forks 
rdohms/symfony 
"repositories": [ 
{ 
"type": "vcs", 
"url": "https://github.com/rdohms/symfony" 
} 
]
symfony/symfony 
Library Consumer Using forks 
rdohms/symfony 
"repositories": [ 
{ 
"type": "vcs", 
"url": "https://github.com/rdohms/symfony" 
} 
] 
+
Tip 
$ composer show -v symfony/symfony 
Library Consumer Using forks
Do not put 
forked repositories 
on packagist 
, 
Library Consumer Using forks
Tip 
"require": { 
"symfony/symfony": "dev-my-patch as 2.5.0" 
} 
Library Consumer Using forks
Composer 
and 
production 
Library Consumer Composer and deployments
Packagist 
. 
Production 
Server 
- 
Library Consumer Composer and deployments
Packagist 
. 
/ Man in the middle 
Production 
Server 
- 
Library Consumer Composer and deployments
Build Server 
0 
Library Consumer Composer and deployments 
Production 
Server 
- 
" 
Packagist 
. 
/ Man in the middle
, 
$ composer install --prefer-dist --no-dev —optimize-autoloader 
Library Consumer Composer and deployments
, 
$ composer install --prefer-dist --no-dev —optimize-autoloader 
Library Consumer Composer and deployments
, 
$ composer install --prefer-dist --no-dev —optimize-autoloader 
1 Install same versions 
1 Uses information defined in the composer.lock file 
Library Consumer Composer and deployments
, 
$ composer install --prefer-dist --no-dev —optimize-autoloader 
Library Consumer Composer and deployments
, 
$ composer install --prefer-dist --no-dev —optimize-autoloader 
1 Downloads distribution packages 
1 Can use local cache for previously downloaded 
1 No git required 
Library Consumer Composer and deployments
, 
$ composer install --prefer-dist --no-dev —optimize-autoloader 
Library Consumer Composer and deployments
, 
$ composer install --prefer-dist --no-dev —optimize-autoloader 
1 Avoids download unnecessary developer libraries 
Library Consumer Composer and deployments
, 
$ composer install --prefer-dist --no-dev —optimize-autoloader 
Library Consumer Composer and deployments
, 
$ composer install --prefer-dist --no-dev —optimize-autoloader 
1 Generates classmap from PSR-0/4 autoloaders 
1 Speeds up autoloading 
Library Consumer Composer and deployments
Tip 
$ composer licenses 
! 
Name: __root__ 
Version: 1.0.0 
Licenses: none 
Dependencies: 
! 
doctrine/annotations v1.2.1 MIT 
doctrine/cache v1.3.1 MIT 
doctrine/collections v1.2 MIT 
doctrine/common v2.4.2 MIT 
doctrine/inflector v1.0 MIT 
doctrine/lexer v1.0 MIT 
psr/log 1.0.0 MIT 
symfony/symfony v2.5.6 MIT 
twig/twig v1.16.2 BSD-3-Clause 
Library Consumer Licensing
Satis and Toran 
Library Consumer Private Packages and Proxy
composer Packagist 
" 
Your application 
$ 
Public 
Repository 
# 
Library Consumer Private Packages and Proxy
composer 
Packagist 
" 
Your application 
$ 
Public 
Repository 
# 
Satis / Toran 
" 
Private 
Repository 
2 
proxy 
Library Consumer Private Packages and Proxy
toranproxy.com 
private repos, automatic packagist proxy 
and support composer development 
Library Consumer Private Packages and Proxy
How many of you? 
$ composer require jquery/jquery 
Library Consumer Tooling
Library Consumer Tooling
Library Consumer Tooling
Javascript only Developer 
3 my-js-library 
4 
Library Consumer Tooling
Javascript only Developer 
3 my-js-library 
Library Consumer Tooling 
! package.json 
4
Javascript only Developer 
3 my-js-library 
Library Consumer Tooling 
! package.json 
! bower.json 
4
Javascript only Developer 
3 my-js-library 
Library Consumer Tooling 
! package.json 
! bower.json 
! composer.json 
4
Javascript only Developer 
3 my-js-library 
Library Consumer Tooling 
! package.json 
! bower.json 
! composer.json 
! .gemspec 
4
Javascript only Developer 
3 my-js-library 
Library Consumer Tooling 
! package.json 
! bower.json 
! composer.json 
! .gemspec 
4 
/ 
/
Library Consumer Tooling
Right tool. 
Right job. 
Library Consumer Tooling
One last thing… 
Library Consumer One last thing
Library Consumer pickle!
$ pickle install memcache 
https://wiki.php.net/rfc/pickle 
https://github.com/FriendsOfPHP/pickle 
Library Consumer pickle!
The Composer Cookbook 
https://leanpub.com/composer-cookbook
https://joind.in/12995 
Thank you.
https://joind.in/12995 
Thank you. any questions? 
7 @rdohms 
6 http://doh.ms 
5 http://slides.doh.ms

Weitere ähnliche Inhalte

Was ist angesagt?

Composer the right way - NomadPHP
Composer the right way - NomadPHPComposer the right way - NomadPHP
Composer the right way - NomadPHPRafael Dohms
 
Composer The Right Way
Composer The Right WayComposer The Right Way
Composer The Right WayRafael Dohms
 
Composer for Busy Developers - php|tek13
Composer for Busy Developers - php|tek13Composer for Busy Developers - php|tek13
Composer for Busy Developers - php|tek13Rafael Dohms
 
Composer the right way - SunshinePHP
Composer the right way - SunshinePHPComposer the right way - SunshinePHP
Composer the right way - SunshinePHPRafael Dohms
 
Php psr standard 2014 01-22
Php psr standard 2014 01-22Php psr standard 2014 01-22
Php psr standard 2014 01-22Võ Duy Tuấn
 
Asynchronous Systems with Fn Flow
Asynchronous Systems with Fn FlowAsynchronous Systems with Fn Flow
Asynchronous Systems with Fn FlowJosé Paumard
 
Mastering Maven 2.0 In 1 Hour V1.3
Mastering Maven 2.0 In 1 Hour V1.3Mastering Maven 2.0 In 1 Hour V1.3
Mastering Maven 2.0 In 1 Hour V1.3Matthew McCullough
 
Composer 經典食譜
Composer 經典食譜Composer 經典食譜
Composer 經典食譜Shengyou Fan
 
Digital Fabrication Studio v.0.2: Information
Digital Fabrication Studio v.0.2: InformationDigital Fabrication Studio v.0.2: Information
Digital Fabrication Studio v.0.2: InformationMassimo Menichinelli
 
DevOps hackathon Session 2: Basics of Chef
DevOps hackathon Session 2: Basics of ChefDevOps hackathon Session 2: Basics of Chef
DevOps hackathon Session 2: Basics of ChefAntons Kranga
 
DevOps Hackathon - Session 1: Vagrant
DevOps Hackathon - Session 1: VagrantDevOps Hackathon - Session 1: Vagrant
DevOps Hackathon - Session 1: VagrantAntons Kranga
 
[2019 south bay meetup] Building more contextual message with Block Kit
[2019 south bay meetup] Building more contextual message with Block Kit[2019 south bay meetup] Building more contextual message with Block Kit
[2019 south bay meetup] Building more contextual message with Block KitTomomi Imura
 
DO YOU WANT TO USE A VCS
DO YOU WANT TO USE A VCSDO YOU WANT TO USE A VCS
DO YOU WANT TO USE A VCSSeongJae Park
 
Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010
Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010 Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010
Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010 Matt Gauger
 
What's new and great in Rails 3 - Matt Gauger - Milwaukee Ruby Users Group De...
What's new and great in Rails 3 - Matt Gauger - Milwaukee Ruby Users Group De...What's new and great in Rails 3 - Matt Gauger - Milwaukee Ruby Users Group De...
What's new and great in Rails 3 - Matt Gauger - Milwaukee Ruby Users Group De...Matt Gauger
 
Lecture1: NGS Analysis on Beocat and an introduction to Perl programming for ...
Lecture1: NGS Analysis on Beocat and an introduction to Perl programming for ...Lecture1: NGS Analysis on Beocat and an introduction to Perl programming for ...
Lecture1: NGS Analysis on Beocat and an introduction to Perl programming for ...Jennifer Shelton
 
Distributing UI Libraries: in a post Web-Component world
Distributing UI Libraries: in a post Web-Component worldDistributing UI Libraries: in a post Web-Component world
Distributing UI Libraries: in a post Web-Component worldRachael L Moore
 
Kotlin 讀書會第三梯次第一章
Kotlin 讀書會第三梯次第一章Kotlin 讀書會第三梯次第一章
Kotlin 讀書會第三梯次第一章Shengyou Fan
 
Tracking huge files with Git LFS (GlueCon 2016)
Tracking huge files with Git LFS (GlueCon 2016)Tracking huge files with Git LFS (GlueCon 2016)
Tracking huge files with Git LFS (GlueCon 2016)Tim Pettersen
 

Was ist angesagt? (20)

Composer the right way - NomadPHP
Composer the right way - NomadPHPComposer the right way - NomadPHP
Composer the right way - NomadPHP
 
Composer The Right Way
Composer The Right WayComposer The Right Way
Composer The Right Way
 
Composer for Busy Developers - php|tek13
Composer for Busy Developers - php|tek13Composer for Busy Developers - php|tek13
Composer for Busy Developers - php|tek13
 
Composer
ComposerComposer
Composer
 
Composer the right way - SunshinePHP
Composer the right way - SunshinePHPComposer the right way - SunshinePHP
Composer the right way - SunshinePHP
 
Php psr standard 2014 01-22
Php psr standard 2014 01-22Php psr standard 2014 01-22
Php psr standard 2014 01-22
 
Asynchronous Systems with Fn Flow
Asynchronous Systems with Fn FlowAsynchronous Systems with Fn Flow
Asynchronous Systems with Fn Flow
 
Mastering Maven 2.0 In 1 Hour V1.3
Mastering Maven 2.0 In 1 Hour V1.3Mastering Maven 2.0 In 1 Hour V1.3
Mastering Maven 2.0 In 1 Hour V1.3
 
Composer 經典食譜
Composer 經典食譜Composer 經典食譜
Composer 經典食譜
 
Digital Fabrication Studio v.0.2: Information
Digital Fabrication Studio v.0.2: InformationDigital Fabrication Studio v.0.2: Information
Digital Fabrication Studio v.0.2: Information
 
DevOps hackathon Session 2: Basics of Chef
DevOps hackathon Session 2: Basics of ChefDevOps hackathon Session 2: Basics of Chef
DevOps hackathon Session 2: Basics of Chef
 
DevOps Hackathon - Session 1: Vagrant
DevOps Hackathon - Session 1: VagrantDevOps Hackathon - Session 1: Vagrant
DevOps Hackathon - Session 1: Vagrant
 
[2019 south bay meetup] Building more contextual message with Block Kit
[2019 south bay meetup] Building more contextual message with Block Kit[2019 south bay meetup] Building more contextual message with Block Kit
[2019 south bay meetup] Building more contextual message with Block Kit
 
DO YOU WANT TO USE A VCS
DO YOU WANT TO USE A VCSDO YOU WANT TO USE A VCS
DO YOU WANT TO USE A VCS
 
Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010
Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010 Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010
Matt Gauger - Lamp vs. the world - MKE PHP Users Group - December 14, 2010
 
What's new and great in Rails 3 - Matt Gauger - Milwaukee Ruby Users Group De...
What's new and great in Rails 3 - Matt Gauger - Milwaukee Ruby Users Group De...What's new and great in Rails 3 - Matt Gauger - Milwaukee Ruby Users Group De...
What's new and great in Rails 3 - Matt Gauger - Milwaukee Ruby Users Group De...
 
Lecture1: NGS Analysis on Beocat and an introduction to Perl programming for ...
Lecture1: NGS Analysis on Beocat and an introduction to Perl programming for ...Lecture1: NGS Analysis on Beocat and an introduction to Perl programming for ...
Lecture1: NGS Analysis on Beocat and an introduction to Perl programming for ...
 
Distributing UI Libraries: in a post Web-Component world
Distributing UI Libraries: in a post Web-Component worldDistributing UI Libraries: in a post Web-Component world
Distributing UI Libraries: in a post Web-Component world
 
Kotlin 讀書會第三梯次第一章
Kotlin 讀書會第三梯次第一章Kotlin 讀書會第三梯次第一章
Kotlin 讀書會第三梯次第一章
 
Tracking huge files with Git LFS (GlueCon 2016)
Tracking huge files with Git LFS (GlueCon 2016)Tracking huge files with Git LFS (GlueCon 2016)
Tracking huge files with Git LFS (GlueCon 2016)
 

Andere mochten auch

Application of Langmuir-Hinshelwood Model to Bioregeneration of Activated Car...
Application of Langmuir-Hinshelwood Model to Bioregeneration of Activated Car...Application of Langmuir-Hinshelwood Model to Bioregeneration of Activated Car...
Application of Langmuir-Hinshelwood Model to Bioregeneration of Activated Car...IOSR Journals
 
Numerical Experiments of Hydrogen-Air Premixed Flames
Numerical Experiments of Hydrogen-Air Premixed FlamesNumerical Experiments of Hydrogen-Air Premixed Flames
Numerical Experiments of Hydrogen-Air Premixed FlamesIJRES Journal
 
Overcome the hurdles_presentation_97_03version
Overcome the hurdles_presentation_97_03versionOvercome the hurdles_presentation_97_03version
Overcome the hurdles_presentation_97_03versionesegreto
 
Timetables Thalys 2015 - 2e semestre - FR
Timetables Thalys 2015 - 2e semestre - FRTimetables Thalys 2015 - 2e semestre - FR
Timetables Thalys 2015 - 2e semestre - FRAlbert Train
 
Centralities_PaoloBoldi
Centralities_PaoloBoldiCentralities_PaoloBoldi
Centralities_PaoloBoldiYandex
 
SPICE MODEL of 2SK2886 (Standard+BDS Model) in SPICE PARK
SPICE MODEL of 2SK2886 (Standard+BDS Model) in SPICE PARKSPICE MODEL of 2SK2886 (Standard+BDS Model) in SPICE PARK
SPICE MODEL of 2SK2886 (Standard+BDS Model) in SPICE PARKTsuyoshi Horigome
 
Hazrat Umar Ka ilmi Zauq
Hazrat Umar Ka ilmi ZauqHazrat Umar Ka ilmi Zauq
Hazrat Umar Ka ilmi ZauqWajid Malik
 
Modelling and Stress Analysis of the Pig Loop Module of a Piping System.
Modelling and Stress Analysis of the Pig Loop Module of a Piping System.Modelling and Stress Analysis of the Pig Loop Module of a Piping System.
Modelling and Stress Analysis of the Pig Loop Module of a Piping System.IJRES Journal
 
Sonaiya software Solutions
Sonaiya software SolutionsSonaiya software Solutions
Sonaiya software Solutionssoniya sonaiya
 
SMi Group's 2nd annual Floating LNG conference
SMi Group's 2nd annual Floating LNG conferenceSMi Group's 2nd annual Floating LNG conference
SMi Group's 2nd annual Floating LNG conferenceDale Butler
 
School-wide PBIS: Bridging Multiple Systems
School-wide PBIS:  Bridging Multiple SystemsSchool-wide PBIS:  Bridging Multiple Systems
School-wide PBIS: Bridging Multiple Systemsemqff
 

Andere mochten auch (20)

DIABETES MELLITUS
DIABETES MELLITUS DIABETES MELLITUS
DIABETES MELLITUS
 
F[4]
F[4]F[4]
F[4]
 
Application of Langmuir-Hinshelwood Model to Bioregeneration of Activated Car...
Application of Langmuir-Hinshelwood Model to Bioregeneration of Activated Car...Application of Langmuir-Hinshelwood Model to Bioregeneration of Activated Car...
Application of Langmuir-Hinshelwood Model to Bioregeneration of Activated Car...
 
Numerical Experiments of Hydrogen-Air Premixed Flames
Numerical Experiments of Hydrogen-Air Premixed FlamesNumerical Experiments of Hydrogen-Air Premixed Flames
Numerical Experiments of Hydrogen-Air Premixed Flames
 
21066 71384-1-pb
21066 71384-1-pb21066 71384-1-pb
21066 71384-1-pb
 
Overcome the hurdles_presentation_97_03version
Overcome the hurdles_presentation_97_03versionOvercome the hurdles_presentation_97_03version
Overcome the hurdles_presentation_97_03version
 
Syndrome of statistical leniency ppt
Syndrome of statistical leniency pptSyndrome of statistical leniency ppt
Syndrome of statistical leniency ppt
 
Timetables Thalys 2015 - 2e semestre - FR
Timetables Thalys 2015 - 2e semestre - FRTimetables Thalys 2015 - 2e semestre - FR
Timetables Thalys 2015 - 2e semestre - FR
 
Adaptive cognitive driving systems
Adaptive cognitive driving systemsAdaptive cognitive driving systems
Adaptive cognitive driving systems
 
Post 9 11 Terror
Post 9 11 TerrorPost 9 11 Terror
Post 9 11 Terror
 
Centralities_PaoloBoldi
Centralities_PaoloBoldiCentralities_PaoloBoldi
Centralities_PaoloBoldi
 
SPICE MODEL of 2SK2886 (Standard+BDS Model) in SPICE PARK
SPICE MODEL of 2SK2886 (Standard+BDS Model) in SPICE PARKSPICE MODEL of 2SK2886 (Standard+BDS Model) in SPICE PARK
SPICE MODEL of 2SK2886 (Standard+BDS Model) in SPICE PARK
 
Clinimacs Newsletter 2010
Clinimacs Newsletter 2010Clinimacs Newsletter 2010
Clinimacs Newsletter 2010
 
Hazrat Umar Ka ilmi Zauq
Hazrat Umar Ka ilmi ZauqHazrat Umar Ka ilmi Zauq
Hazrat Umar Ka ilmi Zauq
 
Modelling and Stress Analysis of the Pig Loop Module of a Piping System.
Modelling and Stress Analysis of the Pig Loop Module of a Piping System.Modelling and Stress Analysis of the Pig Loop Module of a Piping System.
Modelling and Stress Analysis of the Pig Loop Module of a Piping System.
 
Sonaiya software Solutions
Sonaiya software SolutionsSonaiya software Solutions
Sonaiya software Solutions
 
SMi Group's 2nd annual Floating LNG conference
SMi Group's 2nd annual Floating LNG conferenceSMi Group's 2nd annual Floating LNG conference
SMi Group's 2nd annual Floating LNG conference
 
Titoli più letti
Titoli più lettiTitoli più letti
Titoli più letti
 
Unwto 2012
Unwto 2012Unwto 2012
Unwto 2012
 
School-wide PBIS: Bridging Multiple Systems
School-wide PBIS:  Bridging Multiple SystemsSchool-wide PBIS:  Bridging Multiple Systems
School-wide PBIS: Bridging Multiple Systems
 

Ähnlich wie Composer the right way [SweetlakePHP]

PHP Dependency Management with Composer
PHP Dependency Management with ComposerPHP Dependency Management with Composer
PHP Dependency Management with ComposerAdam Englander
 
Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Clark Everetts
 
Dependency management with Composer
Dependency management with ComposerDependency management with Composer
Dependency management with ComposerJason Grimes
 
Android Internal Library Management
Android Internal Library ManagementAndroid Internal Library Management
Android Internal Library ManagementKelly Shuster
 
Php Dependency Management with Composer ZendCon 2017
Php Dependency Management with Composer ZendCon 2017Php Dependency Management with Composer ZendCon 2017
Php Dependency Management with Composer ZendCon 2017Clark Everetts
 
Managing Change
Managing ChangeManaging Change
Managing ChangeMirko Jahn
 
Internal Android Library Management (DroidCon SF 2016, Droidcon Italy 2016)
Internal Android Library Management (DroidCon SF 2016, Droidcon Italy 2016)Internal Android Library Management (DroidCon SF 2016, Droidcon Italy 2016)
Internal Android Library Management (DroidCon SF 2016, Droidcon Italy 2016)Kelly Shuster
 
Using Composer with WordPress - 2.0
Using Composer with WordPress - 2.0Using Composer with WordPress - 2.0
Using Composer with WordPress - 2.0Micah Wood
 
Composer - The missing package manager for PHP
Composer - The missing package manager for PHPComposer - The missing package manager for PHP
Composer - The missing package manager for PHPTareq Hasan
 
Managing your Drupal project with Composer
Managing your Drupal project with ComposerManaging your Drupal project with Composer
Managing your Drupal project with ComposerMatt Glaman
 
Get started with AAR
Get started with AARGet started with AAR
Get started with AARRené Mertins
 
Livecode widget course
Livecode widget courseLivecode widget course
Livecode widget coursecrazyaxe
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Bram Adams
 
Composer Lightning Talk
Composer Lightning TalkComposer Lightning Talk
Composer Lightning TalkEric Johnson
 
Digital Fabrication Studio.02 _Information @ Aalto Media Factory
Digital Fabrication Studio.02 _Information @ Aalto Media FactoryDigital Fabrication Studio.02 _Information @ Aalto Media Factory
Digital Fabrication Studio.02 _Information @ Aalto Media FactoryMassimo Menichinelli
 

Ähnlich wie Composer the right way [SweetlakePHP] (20)

Mastering composer
Mastering composerMastering composer
Mastering composer
 
PHP Dependency Management with Composer
PHP Dependency Management with ComposerPHP Dependency Management with Composer
PHP Dependency Management with Composer
 
Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016Php Dependency Management with Composer ZendCon 2016
Php Dependency Management with Composer ZendCon 2016
 
Dependency management with Composer
Dependency management with ComposerDependency management with Composer
Dependency management with Composer
 
Android Internal Library Management
Android Internal Library ManagementAndroid Internal Library Management
Android Internal Library Management
 
Php Dependency Management with Composer ZendCon 2017
Php Dependency Management with Composer ZendCon 2017Php Dependency Management with Composer ZendCon 2017
Php Dependency Management with Composer ZendCon 2017
 
Managing Change
Managing ChangeManaging Change
Managing Change
 
Composer
ComposerComposer
Composer
 
Composer
ComposerComposer
Composer
 
Internal Android Library Management (DroidCon SF 2016, Droidcon Italy 2016)
Internal Android Library Management (DroidCon SF 2016, Droidcon Italy 2016)Internal Android Library Management (DroidCon SF 2016, Droidcon Italy 2016)
Internal Android Library Management (DroidCon SF 2016, Droidcon Italy 2016)
 
Using Composer with WordPress - 2.0
Using Composer with WordPress - 2.0Using Composer with WordPress - 2.0
Using Composer with WordPress - 2.0
 
Composer - The missing package manager for PHP
Composer - The missing package manager for PHPComposer - The missing package manager for PHP
Composer - The missing package manager for PHP
 
Managing your Drupal project with Composer
Managing your Drupal project with ComposerManaging your Drupal project with Composer
Managing your Drupal project with Composer
 
Get started with AAR
Get started with AARGet started with AAR
Get started with AAR
 
Livecode widget course
Livecode widget courseLivecode widget course
Livecode widget course
 
Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!Modern Release Engineering in a Nutshell - Why Researchers should Care!
Modern Release Engineering in a Nutshell - Why Researchers should Care!
 
Composer Helpdesk
Composer HelpdeskComposer Helpdesk
Composer Helpdesk
 
Composer Lightning Talk
Composer Lightning TalkComposer Lightning Talk
Composer Lightning Talk
 
Composer namespacing
Composer namespacingComposer namespacing
Composer namespacing
 
Digital Fabrication Studio.02 _Information @ Aalto Media Factory
Digital Fabrication Studio.02 _Information @ Aalto Media FactoryDigital Fabrication Studio.02 _Information @ Aalto Media Factory
Digital Fabrication Studio.02 _Information @ Aalto Media Factory
 

Mehr von Rafael Dohms

The Individual Contributor Path - DPC2024
The Individual Contributor Path - DPC2024The Individual Contributor Path - DPC2024
The Individual Contributor Path - DPC2024Rafael Dohms
 
Application Metrics - IPC2023
Application Metrics - IPC2023Application Metrics - IPC2023
Application Metrics - IPC2023Rafael Dohms
 
How'd we get here? A guide to Architectural Decision Records
How'd we get here? A guide to Architectural Decision RecordsHow'd we get here? A guide to Architectural Decision Records
How'd we get here? A guide to Architectural Decision RecordsRafael Dohms
 
Architectural Decision Records - PHPConfBR
Architectural Decision Records - PHPConfBRArchitectural Decision Records - PHPConfBR
Architectural Decision Records - PHPConfBRRafael Dohms
 
Application Metrics (with Prometheus examples)
Application Metrics (with Prometheus examples)Application Metrics (with Prometheus examples)
Application Metrics (with Prometheus examples)Rafael Dohms
 
Application metrics - Confoo 2019
Application metrics - Confoo 2019Application metrics - Confoo 2019
Application metrics - Confoo 2019Rafael Dohms
 
Writing code you won’t hate tomorrow - PHPCE18
Writing code you won’t hate tomorrow - PHPCE18Writing code you won’t hate tomorrow - PHPCE18
Writing code you won’t hate tomorrow - PHPCE18Rafael Dohms
 
Application Metrics (with Prometheus examples) #PHPDD18
Application Metrics (with Prometheus examples) #PHPDD18Application Metrics (with Prometheus examples) #PHPDD18
Application Metrics (with Prometheus examples) #PHPDD18Rafael Dohms
 
Application metrics with Prometheus - DPC18
Application metrics with Prometheus - DPC18Application metrics with Prometheus - DPC18
Application metrics with Prometheus - DPC18Rafael Dohms
 
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonfRafael Dohms
 
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...Rafael Dohms
 
Writing Code That Lasts - #Magento2Seminar, Utrecht
Writing Code That Lasts - #Magento2Seminar, UtrechtWriting Code That Lasts - #Magento2Seminar, Utrecht
Writing Code That Lasts - #Magento2Seminar, UtrechtRafael Dohms
 
“Writing code that lasts” … or writing code you won’t hate tomorrow. - #PHPSRB16
“Writing code that lasts” … or writing code you won’t hate tomorrow. - #PHPSRB16“Writing code that lasts” … or writing code you won’t hate tomorrow. - #PHPSRB16
“Writing code that lasts” … or writing code you won’t hate tomorrow. - #PHPSRB16Rafael Dohms
 
“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.Rafael Dohms
 
A Journey into your Lizard Brain - PHP Conference Brasil 2015
A Journey into your Lizard Brain - PHP Conference Brasil 2015A Journey into your Lizard Brain - PHP Conference Brasil 2015
A Journey into your Lizard Brain - PHP Conference Brasil 2015Rafael Dohms
 
“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.Rafael Dohms
 
“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.Rafael Dohms
 
“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.Rafael Dohms
 
Journey into your Lizard Brain - PHPJHB15
Journey into your Lizard Brain - PHPJHB15Journey into your Lizard Brain - PHPJHB15
Journey into your Lizard Brain - PHPJHB15Rafael Dohms
 
A journey into your Lizard Brain
A journey into your Lizard BrainA journey into your Lizard Brain
A journey into your Lizard BrainRafael Dohms
 

Mehr von Rafael Dohms (20)

The Individual Contributor Path - DPC2024
The Individual Contributor Path - DPC2024The Individual Contributor Path - DPC2024
The Individual Contributor Path - DPC2024
 
Application Metrics - IPC2023
Application Metrics - IPC2023Application Metrics - IPC2023
Application Metrics - IPC2023
 
How'd we get here? A guide to Architectural Decision Records
How'd we get here? A guide to Architectural Decision RecordsHow'd we get here? A guide to Architectural Decision Records
How'd we get here? A guide to Architectural Decision Records
 
Architectural Decision Records - PHPConfBR
Architectural Decision Records - PHPConfBRArchitectural Decision Records - PHPConfBR
Architectural Decision Records - PHPConfBR
 
Application Metrics (with Prometheus examples)
Application Metrics (with Prometheus examples)Application Metrics (with Prometheus examples)
Application Metrics (with Prometheus examples)
 
Application metrics - Confoo 2019
Application metrics - Confoo 2019Application metrics - Confoo 2019
Application metrics - Confoo 2019
 
Writing code you won’t hate tomorrow - PHPCE18
Writing code you won’t hate tomorrow - PHPCE18Writing code you won’t hate tomorrow - PHPCE18
Writing code you won’t hate tomorrow - PHPCE18
 
Application Metrics (with Prometheus examples) #PHPDD18
Application Metrics (with Prometheus examples) #PHPDD18Application Metrics (with Prometheus examples) #PHPDD18
Application Metrics (with Prometheus examples) #PHPDD18
 
Application metrics with Prometheus - DPC18
Application metrics with Prometheus - DPC18Application metrics with Prometheus - DPC18
Application metrics with Prometheus - DPC18
 
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHPKonf
 
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...
“Writing code that lasts” … or writing code you won’t hate tomorrow. - PHP Yo...
 
Writing Code That Lasts - #Magento2Seminar, Utrecht
Writing Code That Lasts - #Magento2Seminar, UtrechtWriting Code That Lasts - #Magento2Seminar, Utrecht
Writing Code That Lasts - #Magento2Seminar, Utrecht
 
“Writing code that lasts” … or writing code you won’t hate tomorrow. - #PHPSRB16
“Writing code that lasts” … or writing code you won’t hate tomorrow. - #PHPSRB16“Writing code that lasts” … or writing code you won’t hate tomorrow. - #PHPSRB16
“Writing code that lasts” … or writing code you won’t hate tomorrow. - #PHPSRB16
 
“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.
 
A Journey into your Lizard Brain - PHP Conference Brasil 2015
A Journey into your Lizard Brain - PHP Conference Brasil 2015A Journey into your Lizard Brain - PHP Conference Brasil 2015
A Journey into your Lizard Brain - PHP Conference Brasil 2015
 
“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.
 
“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.
 
“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.“Writing code that lasts” … or writing code you won’t hate tomorrow.
“Writing code that lasts” … or writing code you won’t hate tomorrow.
 
Journey into your Lizard Brain - PHPJHB15
Journey into your Lizard Brain - PHPJHB15Journey into your Lizard Brain - PHPJHB15
Journey into your Lizard Brain - PHPJHB15
 
A journey into your Lizard Brain
A journey into your Lizard BrainA journey into your Lizard Brain
A journey into your Lizard Brain
 

Kürzlich hochgeladen

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 

Kürzlich hochgeladen (20)

Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

Composer the right way [SweetlakePHP]

  • 1. Composer the right way Rafael Dohms @rdohms
  • 3.
  • 4.
  • 8. Library Publisher photo: 18millionpixels
  • 9. Library Publisher Library Consumer photo: 18millionpixels
  • 10. Library Publisher Library Library Consumer photo: 18millionpixels
  • 11. Library Publisher Library Packagist Library Consumer photo: 18millionpixels
  • 13. { "require": { "monolog/monolog": “2.0” } } photo: 18millionpixels
  • 14. { "require": { "monolog/monolog": “2.0” } } { "name": “monolog/monolog” ... } photo: 18millionpixels
  • 15. { "require": { "monolog/monolog": “2.0” } } { "name": “monolog/monolog” ... } ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Your requirements could not be resolved to an installable set of packages. ! Problem 1 - The requested package monolog/monolog could not be found in any version, there may be a typo in the package name. ! Potential causes: - A typo in the package name - The package is not available in a stable-enough version according to your minimum-stability setting see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details. ! Read <http://getcomposer.org/doc/articles/troubleshooting.md> for further common problems. ! Installation failed, reverting ./composer.json to its original content. photo: 18millionpixels
  • 16. { "require": { ___ ~1.1 "monolog/monolog": “2.0” } } { "name": “monolog/monolog” ... } ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Your requirements could not be resolved to an installable set of packages. ! Problem 1 - The requested package monolog/monolog could not be found in any version, there may be a typo in the package name. ! Potential causes: - A typo in the package name - The package is not available in a stable-enough version according to your minimum-stability setting see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details. ! Read <http://getcomposer.org/doc/articles/troubleshooting.md> for further common problems. ! Installation failed, reverting ./composer.json to its original content. photo: 18millionpixels
  • 17. { "require": { ___ ~1.1 "monolog/monolog": “2.0” } } { "name": “monolog/monolog” ... } ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Your requirements could not be resolved to an installable set of packages. ! Problem 1 - Installing psr/log (1.0.0) Loading from cache ! - Installing monolog/monolog (1.11.0) - The requested package monolog/monolog could not be found in any version, there may be a typo in the package name. ! Downloading: 100% Potential causes: - A typo in the package name - The package is not available in a stable-enough version according to your minimum-stability setting ! monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server) [...] monolog/see <https://monolog groups.suggests google.installing com/d/ext-topic/mongo composer-(Allow dev/_sending g3ASeIFlrc/log messages discussion> to a for MongoDB more server) details. monolog/! monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB) monolog/Read <http://monolog getcomposer.suggests org/installing doc/articles/rollbar/troubleshooting.rollbar (Allow md> sending for further log messages common to problems. Rollbar) ! Writing lock file Installation Generating autoload failed, files reverting ./composer.json to its original content. photo: 18millionpixels
  • 20. ! composer.json composer ! composer.lock
  • 21. ! composer.json composer ! composer.lock
  • 22. discovery Packagist " ! composer.json composer ! composer.lock
  • 23. discovery Packagist source " Repository # ! composer.json composer ! composer.lock
  • 24. discovery source installation Packagist " Vendor Folder $ Repository # ! composer.json composer ! composer.lock
  • 25. Library Publisher $ composer init
  • 26. Library Publisher $ composer init Library Consumer $ composer require <vendor>/<package>
  • 27. Tip $ composer require monolog/monolog Using version ~1.11 for monolog/monolog
  • 28. Composer for Library Publishers
  • 29. vendor / package Library Publisher Unique vendor names
  • 30. pick your own unique vendor Library Publisher Unique vendor names
  • 31. or join a collective Library Publisher Unique vendor names
  • 32. ! README % CHANGELOG & LICENSE Library Publisher What’s in your library?
  • 33. ! README % CHANGELOG & LICENSE ' What problem does it solve? ' Usage examples ' Install instructions ' How can I contribute? Library Publisher What’s in your library?
  • 34. ! README % CHANGELOG & LICENSE ' What problem does it solve? ' Usage examples ' Install instructions ' How can I contribute? ' List relevant changes ' Make BC breaks prominent ' Show examples of how to upgrade Library Publisher What’s in your library?
  • 35. ! README % CHANGELOG & LICENSE ' What problem does it solve? ' Usage examples ' Install instructions ' How can I contribute? ' List relevant changes ' Make BC breaks prominent ' Show examples of how to upgrade ' Pick one that reflects your values ' choosealicense.com can help Library Publisher What’s in your library?
  • 36. 1 . 2 . 3 major minor patch Library Publisher Semantic Versioning
  • 37. 1 . 2 . 3 major minor patch Library Publisher Semantic Versioning Bug Fixes
  • 38. New Features Bug Fixes 1 . 2 . 3 major minor patch Library Publisher Semantic Versioning
  • 39. API / BC Breaks New Features Bug Fixes 1 . 2 . 3 major minor patch Library Publisher Semantic Versioning
  • 40. Tag it and Bag it Library Publisher Tagging
  • 41. # Simple Tag $ git tag v1.2.3 ! ! ! # Annotated Tag $ git tag -a v1.2.3 -m “Description of Release" Library Publisher Tagging
  • 42. Library Publisher “I'm out" photo: jilliancorinne
  • 44. Click here and provide another Library Publisher “I'm out"
  • 47. Pick the correct version Library Publisher Pick a Version
  • 48. * the asterisk Library Publisher Pick a Version
  • 49. * the asterisk ○ Library Publisher Pick a Version
  • 50. ~ the tilde Library Publisher Pick a Version
  • 51. ~1.2 >=1.2.0, <2.0.0 Library Publisher Pick a Version
  • 52. ~1.2 >=1.2.0, <2.0.0 Library Publisher Pick a Version )
  • 53. ~1.2.3 >=1.2.3, <1.3 Library Publisher Pick a Version
  • 54. ~1.2.3 >=1.2.3, <1.3 Library Publisher Pick a Version )
  • 55. 3rd party library "require": { "zendframework/zend-stdlib": “2.1.*”, "zendframework/zend-servicemanager": "2.1.*", }, ! “require-dev": { “phpunit/phpunit": “~3.7” } Your application "require": { "zendframework/zend-stdlib": “~2.3”, "zendframework/zend-servicemanager": “~2.3", }, ! “require-dev": { “phpunit/phpunit": “~4” } Library Publisher Pick a Version
  • 56. 3rd party library "require": { "zendframework/zend-stdlib": “2.1.*”, "zendframework/zend-servicemanager": "2.1.*", }, ! “require-dev": { * “phpunit/phpunit": “~3.7” } Your application "require": { "zendframework/zend-stdlib": “~2.3”, "zendframework/zend-servicemanager": “~2.3", }, ! “require-dev": { “phpunit/phpunit": “~4” } Library Publisher Pick a Version
  • 57. 3rd party library "require": { "zendframework/zend-stdlib": “2.1.*”, "zendframework/zend-servicemanager": "2.1.*", }, ! “require-dev": { * “phpunit/phpunit": “~3.7” } Your application "require": { "zendframework/zend-stdlib": “~2.3”, "zendframework/zend-servicemanager": “~2.3", }, ! “require-dev": { “phpunit/phpunit": “~4” } Library Publisher Pick a Version
  • 58. 3rd party library "require": { "zendframework/zend-stdlib": “2.1.*”, "zendframework/zend-servicemanager": "2.1.*", }, ! “require-dev": { * “phpunit/phpunit": “~3.7” } Your application "require": { "zendframework/zend-stdlib": “~2.3”, "zendframework/zend-servicemanager": “~2.3", }, ! “require-dev": { “phpunit/phpunit": “~4” } Library Publisher Pick a Version ~2.1
  • 59. Composer for Library Consumers
  • 60. install or update? Library Consumer Install or update?
  • 61. Make sure you have installed the last updates from other developers. ? install or update Library Consumer Install or update?
  • 62. Make sure you have installed the last updates from other developers. ? install or update Library Consumer Install or update?
  • 63. Deploying a new release of your application to production. ? install or update Library Consumer Install or update?
  • 64. Deploying a new release of your application to production. ? install or update Library Consumer Install or update?
  • 65. Checked out a new project and want to start coding. ? install or update Library Consumer Install or update?
  • 66. Checked out a new project and want to start coding. ? install or update Library Consumer Install or update?
  • 67. Grab new versions for the dependencies of your project. ? install or update Library Consumer Install or update?
  • 68. Grab new versions for the dependencies of your project. ? install or update Library Consumer Install or update?
  • 69. Your application $ Public Repository # ! composer.lock composer install composer update Library Consumer Install or update?
  • 70. Your application $ Public Repository # ! composer.lock read composer install composer update Library Consumer Install or update?
  • 71. Your application $ read grab version Public Repository # ! composer.lock composer install composer update Library Consumer Install or update?
  • 72. Your application $ read grab version Public Repository # ! composer.lock check latest compatible release composer install composer update Library Consumer Install or update?
  • 73. Your application $ read grab version Public Repository # ! composer.lock check latest compatible release Library Consumer Install or update? update composer install composer update
  • 74. commit your lock file Library Consumer Install or update?
  • 75. Tip $ composer update --lock Library Consumer Install or update?
  • 76. Pick the correct version Library Consumer Version Selection
  • 77. dev-master Library Consumer Version Selection
  • 80. found a bug? Library Consumer Using forks
  • 81. Tip $ composer install --prefer-source Library Consumer Using forks
  • 83. patch it, Library Consumer Using forks
  • 84. patch it, fork it, Library Consumer Using forks
  • 85. patch it, fork it, push it… Library Consumer Using forks
  • 86. patch it, fork it, push it… wait for it. Library Consumer Using forks
  • 87. patch it, fork it, push it… wait for it. Library Consumer Using forks
  • 89. symfony/symfony Library Consumer Using forks rdohms/symfony
  • 90. symfony/symfony Library Consumer Using forks rdohms/symfony "repositories": [ { "type": "vcs", "url": "https://github.com/rdohms/symfony" } ]
  • 91. symfony/symfony Library Consumer Using forks rdohms/symfony "repositories": [ { "type": "vcs", "url": "https://github.com/rdohms/symfony" } ] +
  • 92. Tip $ composer show -v symfony/symfony Library Consumer Using forks
  • 93. Do not put forked repositories on packagist , Library Consumer Using forks
  • 94. Tip "require": { "symfony/symfony": "dev-my-patch as 2.5.0" } Library Consumer Using forks
  • 95. Composer and production Library Consumer Composer and deployments
  • 96. Packagist . Production Server - Library Consumer Composer and deployments
  • 97. Packagist . / Man in the middle Production Server - Library Consumer Composer and deployments
  • 98. Build Server 0 Library Consumer Composer and deployments Production Server - " Packagist . / Man in the middle
  • 99. , $ composer install --prefer-dist --no-dev —optimize-autoloader Library Consumer Composer and deployments
  • 100. , $ composer install --prefer-dist --no-dev —optimize-autoloader Library Consumer Composer and deployments
  • 101. , $ composer install --prefer-dist --no-dev —optimize-autoloader 1 Install same versions 1 Uses information defined in the composer.lock file Library Consumer Composer and deployments
  • 102. , $ composer install --prefer-dist --no-dev —optimize-autoloader Library Consumer Composer and deployments
  • 103. , $ composer install --prefer-dist --no-dev —optimize-autoloader 1 Downloads distribution packages 1 Can use local cache for previously downloaded 1 No git required Library Consumer Composer and deployments
  • 104. , $ composer install --prefer-dist --no-dev —optimize-autoloader Library Consumer Composer and deployments
  • 105. , $ composer install --prefer-dist --no-dev —optimize-autoloader 1 Avoids download unnecessary developer libraries Library Consumer Composer and deployments
  • 106. , $ composer install --prefer-dist --no-dev —optimize-autoloader Library Consumer Composer and deployments
  • 107. , $ composer install --prefer-dist --no-dev —optimize-autoloader 1 Generates classmap from PSR-0/4 autoloaders 1 Speeds up autoloading Library Consumer Composer and deployments
  • 108. Tip $ composer licenses ! Name: __root__ Version: 1.0.0 Licenses: none Dependencies: ! doctrine/annotations v1.2.1 MIT doctrine/cache v1.3.1 MIT doctrine/collections v1.2 MIT doctrine/common v2.4.2 MIT doctrine/inflector v1.0 MIT doctrine/lexer v1.0 MIT psr/log 1.0.0 MIT symfony/symfony v2.5.6 MIT twig/twig v1.16.2 BSD-3-Clause Library Consumer Licensing
  • 109. Satis and Toran Library Consumer Private Packages and Proxy
  • 110. composer Packagist " Your application $ Public Repository # Library Consumer Private Packages and Proxy
  • 111. composer Packagist " Your application $ Public Repository # Satis / Toran " Private Repository 2 proxy Library Consumer Private Packages and Proxy
  • 112. toranproxy.com private repos, automatic packagist proxy and support composer development Library Consumer Private Packages and Proxy
  • 113. How many of you? $ composer require jquery/jquery Library Consumer Tooling
  • 116. Javascript only Developer 3 my-js-library 4 Library Consumer Tooling
  • 117. Javascript only Developer 3 my-js-library Library Consumer Tooling ! package.json 4
  • 118. Javascript only Developer 3 my-js-library Library Consumer Tooling ! package.json ! bower.json 4
  • 119. Javascript only Developer 3 my-js-library Library Consumer Tooling ! package.json ! bower.json ! composer.json 4
  • 120. Javascript only Developer 3 my-js-library Library Consumer Tooling ! package.json ! bower.json ! composer.json ! .gemspec 4
  • 121. Javascript only Developer 3 my-js-library Library Consumer Tooling ! package.json ! bower.json ! composer.json ! .gemspec 4 / /
  • 123. Right tool. Right job. Library Consumer Tooling
  • 124. One last thing… Library Consumer One last thing
  • 126. $ pickle install memcache https://wiki.php.net/rfc/pickle https://github.com/FriendsOfPHP/pickle Library Consumer pickle!
  • 127. The Composer Cookbook https://leanpub.com/composer-cookbook
  • 129. https://joind.in/12995 Thank you. any questions? 7 @rdohms 6 http://doh.ms 5 http://slides.doh.ms