SlideShare ist ein Scribd-Unternehmen logo
1 von 128
Downloaden Sie, um offline zu lesen
Composer 
the right way 
Rafael Dohms 
@rdohms
photo: smileymanwithahat
photo: Rob Allen
The Composer Cookbook 
https://leanpub.com/composer-cookbook
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" 
coming 
soon
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.0, <1.3 
Library Publisher Pick a Version
~1.2.3 
>=1.2.0, <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!
https://joind.in/11878 
Thank you.
https://joind.in/11878 
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 [SweetlakePHP]
Composer the right way [SweetlakePHP]Composer the right way [SweetlakePHP]
Composer the right way [SweetlakePHP]Rafael 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
 
Dependency management with Composer
Dependency management with ComposerDependency management with Composer
Dependency management with ComposerJason Grimes
 
PHP Dependency Management with Composer
PHP Dependency Management with ComposerPHP Dependency Management with Composer
PHP Dependency Management with ComposerAdam Englander
 
Dependency Management with Composer
Dependency Management with ComposerDependency Management with Composer
Dependency Management with ComposerJordi Boggiano
 
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
 
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
 
Asynchronous Systems with Fn Flow
Asynchronous Systems with Fn FlowAsynchronous Systems with Fn Flow
Asynchronous Systems with Fn FlowJosé Paumard
 
Packaging for the Maemo Platform
Packaging for the Maemo PlatformPackaging for the Maemo Platform
Packaging for the Maemo PlatformJeremiah Foster
 
The Gory Details of Debian packages
The Gory Details of Debian packagesThe Gory Details of Debian packages
The Gory Details of Debian packagesJeremiah Foster
 
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
 
CMake Tutorial
CMake TutorialCMake Tutorial
CMake TutorialFu Haiping
 
Solbase & Real-time Activity
Solbase & Real-time ActivitySolbase & Real-time Activity
Solbase & Real-time ActivityRon White
 

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 [SweetlakePHP]
Composer the right way [SweetlakePHP]Composer the right way [SweetlakePHP]
Composer the right way [SweetlakePHP]
 
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
 
Dependency management with Composer
Dependency management with ComposerDependency management with Composer
Dependency management with Composer
 
PHP Dependency Management with Composer
PHP Dependency Management with ComposerPHP Dependency Management with Composer
PHP Dependency Management with Composer
 
Dependency Management with Composer
Dependency Management with ComposerDependency Management with Composer
Dependency Management with Composer
 
Php psr standard 2014 01-22
Php psr standard 2014 01-22Php psr standard 2014 01-22
Php psr standard 2014 01-22
 
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
 
Asynchronous Systems with Fn Flow
Asynchronous Systems with Fn FlowAsynchronous Systems with Fn Flow
Asynchronous Systems with Fn Flow
 
Swoole Love PHP
Swoole Love PHPSwoole Love PHP
Swoole Love PHP
 
Packaging for the Maemo Platform
Packaging for the Maemo PlatformPackaging for the Maemo Platform
Packaging for the Maemo Platform
 
The Gory Details of Debian packages
The Gory Details of Debian packagesThe Gory Details of Debian packages
The Gory Details of Debian packages
 
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 ...
 
CMake Tutorial
CMake TutorialCMake Tutorial
CMake Tutorial
 
Dependency Management With Pinto
Dependency Management With PintoDependency Management With Pinto
Dependency Management With Pinto
 
Pinto+Stratopan+Love
Pinto+Stratopan+LovePinto+Stratopan+Love
Pinto+Stratopan+Love
 
Solbase & Real-time Activity
Solbase & Real-time ActivitySolbase & Real-time Activity
Solbase & Real-time Activity
 
Effective CMake
Effective CMakeEffective CMake
Effective CMake
 

Andere mochten auch

Understanding Engineers
Understanding Engineers Understanding Engineers
Understanding Engineers Kelly Services
 
Composer: putting dependencies on the score
Composer: putting dependencies on the scoreComposer: putting dependencies on the score
Composer: putting dependencies on the scoreRafael Dohms
 
Composting Institutional Food Scraps with Worms
Composting Institutional Food Scraps with WormsComposting Institutional Food Scraps with Worms
Composting Institutional Food Scraps with Wormsx3G9
 
Bay mulchshowcase
Bay mulchshowcaseBay mulchshowcase
Bay mulchshowcasekeadams26
 
Innovations in composting
Innovations in compostingInnovations in composting
Innovations in compostingMarissa O'Neill
 
Schools#2 Cafeteria Composting Programs - Cambridge
Schools#2 Cafeteria Composting Programs - CambridgeSchools#2 Cafeteria Composting Programs - Cambridge
Schools#2 Cafeteria Composting Programs - CambridgeMassRecycle 2011 Conference
 
How to be a SemVer Hero – an interactive lightning talk
How to be a SemVer Hero – an interactive lightning talkHow to be a SemVer Hero – an interactive lightning talk
How to be a SemVer Hero – an interactive lightning talkBen Maraney
 
Los Coches Del Papa
Los Coches Del PapaLos Coches Del Papa
Los Coches Del PapaJazmín Lobo
 
Semantic Versioning
Semantic VersioningSemantic Versioning
Semantic VersioningDrupalize.Me
 
2015 ISOSWO APWA Spring Conference: Composting at Landfills
2015 ISOSWO APWA Spring Conference: Composting at Landfills2015 ISOSWO APWA Spring Conference: Composting at Landfills
2015 ISOSWO APWA Spring Conference: Composting at Landfillsisoswo
 
Food Waste Composting - Montgomery County - Opportunities and Obstacles April...
Food Waste Composting - Montgomery County - Opportunities and Obstacles April...Food Waste Composting - Montgomery County - Opportunities and Obstacles April...
Food Waste Composting - Montgomery County - Opportunities and Obstacles April...Recycling and Resource Management Division
 
Semantic Versioning Lightning Talk
Semantic Versioning Lightning TalkSemantic Versioning Lightning Talk
Semantic Versioning Lightning TalkAaron Blythe
 
Wearable - storytelling or storydoing - Yiannis Lapatas
Wearable - storytelling or storydoing - Yiannis LapatasWearable - storytelling or storydoing - Yiannis Lapatas
Wearable - storytelling or storydoing - Yiannis LapatasIABRomania
 
The Rise of Wearable Technology
The Rise of Wearable Technology  The Rise of Wearable Technology
The Rise of Wearable Technology Jonathan LeBlanc
 
Engineering your culture how to keep your engineers happy
Engineering your culture   how to keep your engineers happyEngineering your culture   how to keep your engineers happy
Engineering your culture how to keep your engineers happyAgilePractitionersIL
 
3D print for manufacturing
3D print for manufacturing3D print for manufacturing
3D print for manufacturingGal Raz
 
Webinar - AWS 201 IoT with AWS - Smart devices powered by the cloud
Webinar - AWS 201 IoT with AWS - Smart devices powered by the cloudWebinar - AWS 201 IoT with AWS - Smart devices powered by the cloud
Webinar - AWS 201 IoT with AWS - Smart devices powered by the cloudAmazon Web Services
 
Жизнь в спектре аутизма и за его пределами
Жизнь в спектре аутизма и за его пределамиЖизнь в спектре аутизма и за его пределами
Жизнь в спектре аутизма и за его пределамиrooiperspektiva
 

Andere mochten auch (20)

Understanding Engineers
Understanding Engineers Understanding Engineers
Understanding Engineers
 
Composer: putting dependencies on the score
Composer: putting dependencies on the scoreComposer: putting dependencies on the score
Composer: putting dependencies on the score
 
Composting Institutional Food Scraps with Worms
Composting Institutional Food Scraps with WormsComposting Institutional Food Scraps with Worms
Composting Institutional Food Scraps with Worms
 
Bay mulchshowcase
Bay mulchshowcaseBay mulchshowcase
Bay mulchshowcase
 
Innovations in composting
Innovations in compostingInnovations in composting
Innovations in composting
 
Schools#2 Cafeteria Composting Programs - Cambridge
Schools#2 Cafeteria Composting Programs - CambridgeSchools#2 Cafeteria Composting Programs - Cambridge
Schools#2 Cafeteria Composting Programs - Cambridge
 
How to be a SemVer Hero – an interactive lightning talk
How to be a SemVer Hero – an interactive lightning talkHow to be a SemVer Hero – an interactive lightning talk
How to be a SemVer Hero – an interactive lightning talk
 
Andy carvell-sound cloud
Andy carvell-sound cloudAndy carvell-sound cloud
Andy carvell-sound cloud
 
Los Coches Del Papa
Los Coches Del PapaLos Coches Del Papa
Los Coches Del Papa
 
Semantic Versioning
Semantic VersioningSemantic Versioning
Semantic Versioning
 
2015 ISOSWO APWA Spring Conference: Composting at Landfills
2015 ISOSWO APWA Spring Conference: Composting at Landfills2015 ISOSWO APWA Spring Conference: Composting at Landfills
2015 ISOSWO APWA Spring Conference: Composting at Landfills
 
Food Waste Composting - Montgomery County - Opportunities and Obstacles April...
Food Waste Composting - Montgomery County - Opportunities and Obstacles April...Food Waste Composting - Montgomery County - Opportunities and Obstacles April...
Food Waste Composting - Montgomery County - Opportunities and Obstacles April...
 
Semantic Versioning Lightning Talk
Semantic Versioning Lightning TalkSemantic Versioning Lightning Talk
Semantic Versioning Lightning Talk
 
"Composting 101" Presentation
"Composting 101" Presentation"Composting 101" Presentation
"Composting 101" Presentation
 
Wearable - storytelling or storydoing - Yiannis Lapatas
Wearable - storytelling or storydoing - Yiannis LapatasWearable - storytelling or storydoing - Yiannis Lapatas
Wearable - storytelling or storydoing - Yiannis Lapatas
 
The Rise of Wearable Technology
The Rise of Wearable Technology  The Rise of Wearable Technology
The Rise of Wearable Technology
 
Engineering your culture how to keep your engineers happy
Engineering your culture   how to keep your engineers happyEngineering your culture   how to keep your engineers happy
Engineering your culture how to keep your engineers happy
 
3D print for manufacturing
3D print for manufacturing3D print for manufacturing
3D print for manufacturing
 
Webinar - AWS 201 IoT with AWS - Smart devices powered by the cloud
Webinar - AWS 201 IoT with AWS - Smart devices powered by the cloudWebinar - AWS 201 IoT with AWS - Smart devices powered by the cloud
Webinar - AWS 201 IoT with AWS - Smart devices powered by the cloud
 
Жизнь в спектре аутизма и за его пределами
Жизнь в спектре аутизма и за его пределамиЖизнь в спектре аутизма и за его пределами
Жизнь в спектре аутизма и за его пределами
 

Ähnlich wie Composer the right way

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
 
Android Internal Library Management
Android Internal Library ManagementAndroid Internal Library Management
Android Internal Library ManagementKelly Shuster
 
Managing Change
Managing ChangeManaging Change
Managing ChangeMirko Jahn
 
Using Composer with WordPress - 2.0
Using Composer with WordPress - 2.0Using Composer with WordPress - 2.0
Using Composer with WordPress - 2.0Micah Wood
 
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
 
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
 
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
 
Managing your Drupal project with Composer
Managing your Drupal project with ComposerManaging your Drupal project with Composer
Managing your Drupal project with ComposerMatt Glaman
 
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
 
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
 
Composer Lightning Talk
Composer Lightning TalkComposer Lightning Talk
Composer Lightning TalkEric Johnson
 
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 & Drupal
Composer & DrupalComposer & Drupal
Composer & Drupaldrubb
 

Ähnlich wie Composer the right way (20)

Mastering composer
Mastering composerMastering composer
Mastering 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
 
Android Internal Library Management
Android Internal Library ManagementAndroid Internal Library Management
Android Internal Library Management
 
Managing Change
Managing ChangeManaging Change
Managing Change
 
Using Composer with WordPress - 2.0
Using Composer with WordPress - 2.0Using Composer with WordPress - 2.0
Using Composer with WordPress - 2.0
 
Composer
ComposerComposer
Composer
 
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
 
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
 
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
 
Composer
ComposerComposer
Composer
 
Managing your Drupal project with Composer
Managing your Drupal project with ComposerManaging your Drupal project with Composer
Managing your Drupal project with 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)
 
Composer Helpdesk
Composer HelpdeskComposer Helpdesk
Composer Helpdesk
 
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
 
Composer namespacing
Composer namespacingComposer namespacing
Composer namespacing
 
Dependency Management
Dependency ManagementDependency Management
Dependency Management
 
Composer Lightning Talk
Composer Lightning TalkComposer Lightning Talk
Composer Lightning Talk
 
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 & Drupal
Composer & DrupalComposer & Drupal
Composer & Drupal
 

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

Introduction to Machine Learning Unit-3 for II MECH
Introduction to Machine Learning Unit-3 for II MECHIntroduction to Machine Learning Unit-3 for II MECH
Introduction to Machine Learning Unit-3 for II MECHC Sai Kiran
 
Past, Present and Future of Generative AI
Past, Present and Future of Generative AIPast, Present and Future of Generative AI
Past, Present and Future of Generative AIabhishek36461
 
Risk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfRisk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfROCENODodongVILLACER
 
Call Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call GirlsCall Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call Girlsssuser7cb4ff
 
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfCCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfAsst.prof M.Gokilavani
 
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)dollysharma2066
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile servicerehmti665
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxJoão Esperancinha
 
Comparative Analysis of Text Summarization Techniques
Comparative Analysis of Text Summarization TechniquesComparative Analysis of Text Summarization Techniques
Comparative Analysis of Text Summarization Techniquesugginaramesh
 
Correctly Loading Incremental Data at Scale
Correctly Loading Incremental Data at ScaleCorrectly Loading Incremental Data at Scale
Correctly Loading Incremental Data at ScaleAlluxio, Inc.
 
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...srsj9000
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catcherssdickerson1
 
Work Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvWork Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvLewisJB
 
An introduction to Semiconductor and its types.pptx
An introduction to Semiconductor and its types.pptxAn introduction to Semiconductor and its types.pptx
An introduction to Semiconductor and its types.pptxPurva Nikam
 
Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...121011101441
 
Biology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxBiology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxDeepakSakkari2
 

Kürzlich hochgeladen (20)

Introduction to Machine Learning Unit-3 for II MECH
Introduction to Machine Learning Unit-3 for II MECHIntroduction to Machine Learning Unit-3 for II MECH
Introduction to Machine Learning Unit-3 for II MECH
 
Past, Present and Future of Generative AI
Past, Present and Future of Generative AIPast, Present and Future of Generative AI
Past, Present and Future of Generative AI
 
Risk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdfRisk Assessment For Installation of Drainage Pipes.pdf
Risk Assessment For Installation of Drainage Pipes.pdf
 
Design and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdfDesign and analysis of solar grass cutter.pdf
Design and analysis of solar grass cutter.pdf
 
Call Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call GirlsCall Girls Narol 7397865700 Independent Call Girls
Call Girls Narol 7397865700 Independent Call Girls
 
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdfCCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
CCS355 Neural Network & Deep Learning Unit II Notes with Question bank .pdf
 
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
Call Us ≽ 8377877756 ≼ Call Girls In Shastri Nagar (Delhi)
 
Call Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile serviceCall Girls Delhi {Jodhpur} 9711199012 high profile service
Call Girls Delhi {Jodhpur} 9711199012 high profile service
 
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptxDecoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
Decoding Kotlin - Your guide to solving the mysterious in Kotlin.pptx
 
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
🔝9953056974🔝!!-YOUNG call girls in Rajendra Nagar Escort rvice Shot 2000 nigh...
 
Comparative Analysis of Text Summarization Techniques
Comparative Analysis of Text Summarization TechniquesComparative Analysis of Text Summarization Techniques
Comparative Analysis of Text Summarization Techniques
 
young call girls in Green Park🔝 9953056974 🔝 escort Service
young call girls in Green Park🔝 9953056974 🔝 escort Serviceyoung call girls in Green Park🔝 9953056974 🔝 escort Service
young call girls in Green Park🔝 9953056974 🔝 escort Service
 
Correctly Loading Incremental Data at Scale
Correctly Loading Incremental Data at ScaleCorrectly Loading Incremental Data at Scale
Correctly Loading Incremental Data at Scale
 
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
Gfe Mayur Vihar Call Girls Service WhatsApp -> 9999965857 Available 24x7 ^ De...
 
Exploring_Network_Security_with_JA3_by_Rakesh Seal.pptx
Exploring_Network_Security_with_JA3_by_Rakesh Seal.pptxExploring_Network_Security_with_JA3_by_Rakesh Seal.pptx
Exploring_Network_Security_with_JA3_by_Rakesh Seal.pptx
 
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor CatchersTechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
TechTAC® CFD Report Summary: A Comparison of Two Types of Tubing Anchor Catchers
 
Work Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvvWork Experience-Dalton Park.pptxfvvvvvvv
Work Experience-Dalton Park.pptxfvvvvvvv
 
An introduction to Semiconductor and its types.pptx
An introduction to Semiconductor and its types.pptxAn introduction to Semiconductor and its types.pptx
An introduction to Semiconductor and its types.pptx
 
Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...Instrumentation, measurement and control of bio process parameters ( Temperat...
Instrumentation, measurement and control of bio process parameters ( Temperat...
 
Biology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptxBiology for Computer Engineers Course Handout.pptx
Biology for Computer Engineers Course Handout.pptx
 

Composer the right way

  • 1. Composer the right way Rafael Dohms @rdohms
  • 3.
  • 4.
  • 6. The Composer Cookbook https://leanpub.com/composer-cookbook
  • 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"
  • 46. Library Publisher “I'm out" coming soon
  • 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.0, <1.3 Library Publisher Pick a Version
  • 54. ~1.2.3 >=1.2.0, <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!
  • 128. https://joind.in/11878 Thank you. any questions? 7 @rdohms 6 http://doh.ms 5 http://slides.doh.ms