Download - Composer The Right Way - 010PHP
![Page 1: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/1.jpg)
Composerthe right way
@rdohmsRafael Dohms
![Page 2: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/2.jpg)
photo: smileymanwithahat
![Page 3: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/3.jpg)
![Page 4: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/4.jpg)
![Page 5: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/5.jpg)
photo: Rob Allen
jobs.usabilla.comWe are hiring!
![Page 6: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/6.jpg)
photo: 18millionpixels
![Page 7: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/7.jpg)
Library Publisher
photo: 18millionpixels
![Page 8: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/8.jpg)
Library Publisher
Library Consumer
photo: 18millionpixels
![Page 9: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/9.jpg)
Library Publisher
Library
Library Consumer
photo: 18millionpixels
![Page 10: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/10.jpg)
Library Publisher
Library
Library Consumer
Packagist
photo: 18millionpixels
![Page 11: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/11.jpg)
photo: 18millionpixels
![Page 12: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/12.jpg)
{ "require": { "monolog/monolog": “2.0” }}
photo: 18millionpixels
![Page 13: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/13.jpg)
{ "require": { "monolog/monolog": “2.0” }}
{ "name": “monolog/monolog”
...}
photo: 18millionpixels
![Page 14: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/14.jpg)
{ "require": { "monolog/monolog": “2.0” }}
{ "name": “monolog/monolog”
...}
./composer.json has been updatedLoading composer repositories with package informationUpdating 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
![Page 15: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/15.jpg)
{ "require": { "monolog/monolog": “2.0” }}
{ "name": “monolog/monolog”
...}
./composer.json has been updatedLoading composer repositories with package informationUpdating 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.
___~1.1
photo: 18millionpixels
![Page 16: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/16.jpg)
{ "require": { "monolog/monolog": “2.0” }}
{ "name": “monolog/monolog”
...}
./composer.json has been updatedLoading composer repositories with package informationUpdating 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.
./composer.json has been updatedLoading composer repositories with package informationUpdating dependencies (including require-dev) - Installing psr/log (1.0.0) Loading from cache
- Installing monolog/monolog (1.11.0) Downloading: 100%
monolog/monolog suggests installing graylog2/gelf-php (Allow sending log messages to a GrayLog2 server)[...]monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)monolog/monolog suggests installing aws/aws-sdk-php (Allow sending log messages to AWS services like DynamoDB)monolog/monolog suggests installing rollbar/rollbar (Allow sending log messages to Rollbar)Writing lock fileGenerating autoload files
___~1.1
photo: 18millionpixels
![Page 17: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/17.jpg)
composer
![Page 18: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/18.jpg)
composercomposer.json!
![Page 19: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/19.jpg)
composercomposer.json!
composer.lock!
![Page 20: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/20.jpg)
composercomposer.json!
composer.lock!
![Page 21: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/21.jpg)
discovery Packagist
"
composercomposer.json!
composer.lock!
![Page 22: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/22.jpg)
discovery sourcePackagist
"
Repository
#
composercomposer.json!
composer.lock!
![Page 23: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/23.jpg)
discovery source
installation
Packagist
"
Vendor Folder
$
Repository
#
composercomposer.json!
composer.lock!
![Page 24: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/24.jpg)
$ composer self-update
Production
$ composer self-update --snapshot
Development
$ composer self-update --preview
CI / Build
![Page 25: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/25.jpg)
$ composer init
Library Publisher
![Page 26: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/26.jpg)
$ composer init
Library Publisher
$ composer require <vendor>/<package>
Library Consumer
![Page 27: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/27.jpg)
Install instructions
![Page 28: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/28.jpg)
Install instructions
1. Edit your composer.json
![Page 29: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/29.jpg)
Install instructions
1. Edit your composer.json2. Add `package/vendor`
![Page 30: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/30.jpg)
Install instructions
1. Edit your composer.json2. Add `package/vendor`3. Run `composer update`
![Page 31: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/31.jpg)
Install instructions
1. Edit your composer.json2. Add `package/vendor`3. Run `composer update`
or was that install? err… i can’t remember.
![Page 32: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/32.jpg)
![Page 33: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/33.jpg)
$ composer require monolog/monolog
Tip
![Page 34: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/34.jpg)
$ composer require monolog/monolog
Tip
Using version ^1.11 for monolog/monolog
![Page 35: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/35.jpg)
$ composer require monolog/monolog --sort-packages
Tip
![Page 36: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/36.jpg)
$ composer require monolog/monolog
--prefer-stable--prefer-lowest--no-scripts
Tip
![Page 37: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/37.jpg)
$ composer remove monolog/monolog
Tip
![Page 38: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/38.jpg)
Library PublishersComposer for
![Page 39: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/39.jpg)
Library Publisher Unique vendor names
vendor / package
![Page 40: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/40.jpg)
Library Publisher Unique vendor names
pick your own unique vendor
![Page 41: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/41.jpg)
Library Publisher Unique vendor names
or join a collective
![Page 42: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/42.jpg)
README!
CHANGELOG%
LICENSE&
Library Publisher What’s in your library?
![Page 43: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/43.jpg)
README!
CHANGELOG%
LICENSE&
Library Publisher What’s in your library?
' What problem does it solve?' Usage examples' Install instructions' How can I contribute?
![Page 44: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/44.jpg)
README!
CHANGELOG%
LICENSE&
Library Publisher What’s in your library?
' List relevant changes' Make BC breaks prominent' Show examples of how to upgrade
' What problem does it solve?' Usage examples' Install instructions' How can I contribute?
![Page 45: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/45.jpg)
README!
CHANGELOG%
LICENSE&
Library Publisher What’s in your library?
' List relevant changes' Make BC breaks prominent' Show examples of how to upgrade
' Pick one that reflects your values' choosealicense.com can help
' What problem does it solve?' Usage examples' Install instructions' How can I contribute?
![Page 46: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/46.jpg)
Library Publisher Semantic Versioning
1 . 2 3.major minor patch
![Page 47: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/47.jpg)
Library Publisher Semantic Versioning
1 . 2 3.major minor patch
Bug Fixes
![Page 48: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/48.jpg)
Library Publisher Semantic Versioning
1 . 2 3.major minor patch
New Features Bug Fixes
![Page 49: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/49.jpg)
Library Publisher Semantic Versioning
1 . 2 3.major minor patch
API / BC Breaks New Features Bug Fixes
![Page 50: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/50.jpg)
Library Publisher Tagging
Please, tag your releases.
![Page 51: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/51.jpg)
Library Publisher Tagging
Please, tag your releases.
often!
![Page 52: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/52.jpg)
http://phppackagechecklist.com/
The PHP PackageChecklist
Library Publisher The Checklist
![Page 53: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/53.jpg)
Library Publisher “I'm out"
photo: nickwebb
![Page 54: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/54.jpg)
Library Publisher “I'm out"
![Page 55: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/55.jpg)
Library Publisher “I'm out"
Click here and provide an alternative
![Page 56: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/56.jpg)
Library Publisher “I'm out"
![Page 57: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/57.jpg)
Pick the correct version
Library Publisher Pick a Version
![Page 58: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/58.jpg)
*the asteriskLibrary Publisher Pick a Version
![Page 59: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/59.jpg)
*the asterisk○Library Publisher Pick a Version
![Page 60: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/60.jpg)
~the tilde
Library Publisher Pick a Version
![Page 61: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/61.jpg)
~1.2>=1.2.0, <2.0.0
Library Publisher Pick a Version
![Page 62: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/62.jpg)
~1.2>=1.2.0, <2.0.0
Library Publisher Pick a Version
)
![Page 63: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/63.jpg)
~1.2.3>=1.2.3, <1.3
Library Publisher Pick a Version
![Page 64: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/64.jpg)
~1.2.3>=1.2.3, <1.3
Library Publisher Pick a Version
)
![Page 65: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/65.jpg)
Yo @rdohms, I’m really happy for you and
I’m gonna let you finish, but the tilde operator is
totally old news.
![Page 66: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/66.jpg)
^the caretLibrary Publisher Pick a Version
![Page 67: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/67.jpg)
1.2.3>=1.2.3, <2.0.0
Library Publisher Pick a Version
^
![Page 68: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/68.jpg)
1.2.3>=1.2.3, <2.0.0
Library Publisher Pick a Version
)
^)
![Page 69: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/69.jpg)
0.3.0>=0.3.0, <0.4.0
Library Publisher Pick a Version
^
![Page 70: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/70.jpg)
0.3.0>=0.3.0, <0.4.0
Library Publisher Pick a Version
^)
![Page 71: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/71.jpg)
0.3.0>=0.3.0, <0.4.0
Library Publisher Pick a Version
^)
Major Version Zero
![Page 72: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/72.jpg)
"require": { "zendframework/zend-stdlib": “2.1.*”, "zendframework/zend-servicemanager": "2.1.*",},
“require-dev": { “phpunit/phpunit": “~3.7”}
Library Publisher Pick a Version
"require": { "zendframework/zend-stdlib": “^2.3”, "zendframework/zend-servicemanager": “^2.3",},
“require-dev": { “phpunit/phpunit": “~4”}
3rd party library
Your application
![Page 73: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/73.jpg)
"require": { "zendframework/zend-stdlib": “2.1.*”, "zendframework/zend-servicemanager": "2.1.*",},
“require-dev": { “phpunit/phpunit": “~3.7”}
Library Publisher Pick a Version
"require": { "zendframework/zend-stdlib": “^2.3”, "zendframework/zend-servicemanager": “^2.3",},
“require-dev": { “phpunit/phpunit": “~4”}
3rd party library
Your application
*
![Page 74: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/74.jpg)
"require": { "zendframework/zend-stdlib": “2.1.*”, "zendframework/zend-servicemanager": "2.1.*",},
“require-dev": { “phpunit/phpunit": “~3.7”}
Library Publisher Pick a Version
"require": { "zendframework/zend-stdlib": “^2.3”, "zendframework/zend-servicemanager": “^2.3",},
“require-dev": { “phpunit/phpunit": “~4”}
3rd party library
Your application
*
![Page 75: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/75.jpg)
"require": { "zendframework/zend-stdlib": “2.1.*”, "zendframework/zend-servicemanager": "2.1.*",},
“require-dev": { “phpunit/phpunit": “~3.7”}
Library Publisher Pick a Version
"require": { "zendframework/zend-stdlib": “^2.3”, "zendframework/zend-servicemanager": “^2.3",},
“require-dev": { “phpunit/phpunit": “~4”}
3rd party library
Your application
*
^2.1
![Page 76: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/76.jpg)
Library ConsumersComposer for
![Page 77: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/77.jpg)
Library Consumer Install or update?
install or update?
![Page 78: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/78.jpg)
Library Consumer Install or update?
Make sure you have installed the last updates from other developers.
?
install updateor
![Page 79: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/79.jpg)
Library Consumer Install or update?
Make sure you have installed the last updates from other developers.
?
install updateor
![Page 80: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/80.jpg)
Library Consumer Install or update?
Deploying a new release of your application to production.
?
install updateor
![Page 81: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/81.jpg)
Library Consumer Install or update?
Deploying a new release of your application to production.
?
install updateor
![Page 82: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/82.jpg)
Library Consumer Install or update?
Checked out a new project and want to start coding.
?
install updateor
![Page 83: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/83.jpg)
Library Consumer Install or update?
Checked out a new project and want to start coding.
?
install updateor
![Page 84: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/84.jpg)
Library Consumer Install or update?
Grab new versions for the dependencies of your project.
?
install updateor
![Page 85: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/85.jpg)
Library Consumer Install or update?
Grab new versions for the dependencies of your project.
?
install updateor
![Page 86: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/86.jpg)
Your application
$
Public Repository
#
Library Consumer Behind the scenes with install/update
composer.lock!
composer installcomposer update
![Page 87: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/87.jpg)
Your application
$
Public Repository
#
Library Consumer Behind the scenes with install/update
composer.lock!
read
composer installcomposer update
![Page 88: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/88.jpg)
Your application
$
Public Repository
#
Library Consumer Behind the scenes with install/update
composer.lock!
read grab version
composer installcomposer update
![Page 89: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/89.jpg)
Your application
$
Public Repository
#
Library Consumer Behind the scenes with install/update
composer.lock!
read grab version
check latest compatible release
composer installcomposer update
![Page 90: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/90.jpg)
Your application
$
Public Repository
#
Library Consumer Behind the scenes with install/update
composer.lock!
read grab version
check latest compatible release
update
composer installcomposer update
![Page 91: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/91.jpg)
Your application
$
Public Repository
#
Library Consumer Behind the scenes with install/update
composer.lock!
read grab version
check latest compatible release
update
composer installcomposer update
no lock file? composer update
![Page 92: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/92.jpg)
Library Consumer The .lock issue
commit your lock file*
![Page 93: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/93.jpg)
Library Consumer The .lock issue
commit your lock file*
* always! even for libraries! :D
![Page 94: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/94.jpg)
Library Consumer The .lock issue
commit your lock file*
* always! even for libraries! :D** we will discuss that over beer.
![Page 95: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/95.jpg)
Tip
since beta1
Library Consumer Updating interactively
![Page 96: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/96.jpg)
$ composer update —interactive (-i)
Tip
since beta1
Library Consumer Updating interactively
![Page 97: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/97.jpg)
CONFLICT (content): Merge conflict in composer.lockAutomatic merge failed; fix conflicts and then commit the result.
Library Consumer Merge Conflict
![Page 98: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/98.jpg)
CONFLICT (content): Merge conflict in composer.lockAutomatic merge failed; fix conflicts and then commit the result.
Library Consumer Merge Conflict
![Page 99: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/99.jpg)
![Page 100: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/100.jpg)
![Page 101: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/101.jpg)
# First. # Get the valid, clean external version of the lock$ git checkout origin/<target> -- composer.lock composer.json
# Second.# Replay your changes, whatever they were$ composer require <new/package> --update-with-dependencies$ composer update <existing/package>
# Third.# Commit your changes$ git add .$ git commit.
# Profit!
Solving Merge Conflicts
Library Consumer Solving Merge Conflicts
![Page 102: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/102.jpg)
Pick the correct version
Library Consumer Version Selection
![Page 103: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/103.jpg)
Library Consumer Version Selection
dev-master
![Page 104: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/104.jpg)
Library Consumer Version Selection
![Page 105: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/105.jpg)
Library Consumer Version Selection
![Page 106: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/106.jpg)
Tip
since beta1
![Page 107: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/107.jpg)
$ composer why-not <package>
doctrine/doctrine-bundle 1.6.2 requires symfony/framework-bundle (~2.3|~3.0)doctrine/doctrine-cache-bundle 1.3.0 requires symfony/doctrine-bridge (~2.2|~3.0)doctrine/doctrine-fixtures-bundle 2.3.0 requires symfony/doctrine-bridge (~2.3|~3.0)doctrine/doctrine-migrations-bundle dev-master requires symfony/framework-bundle (~2.3|~3.0)doctrine/migrations dev-master requires symfony/yaml (~2.3|~3.0)doctrine/orm v2.5.4 requires symfony/console (~2.5|~3.0)friendsofsymfony/rest-bundle 1.7.7 requires symfony/http-kernel (^2.3.24|~3.0)incenteev/composer-parameter-handler v2.1.2 requires symfony/yaml (~2.3|~3.0)jms/serializer-bundle 1.1.0 requires symfony/framework-bundle (~2.3|~3.0)knplabs/knp-paginator-bundle 2.5.1 requires symfony/framework-bundle (~2.3|~3.0)kriswallsmith/assetic v1.3.2 requires symfony/process (~2.1|~3.0)
Tip
since beta1
![Page 108: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/108.jpg)
$ composer outdated
composer/composer 1.0.3 1.1.0 filp/whoops 2.1.0 2.1.2 justinrainbow/json-schema 1.6.1 2.0.3 nikic/fast-route v0.7.0 v1.0.0 oscarotero/psr7-middlewares v3.14.3 v3.15.1
Tip
![Page 109: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/109.jpg)
Library Consumer Using forks
found a bug?
![Page 110: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/110.jpg)
Library Consumer Using forks
$ composer install --prefer-source
Tip
![Page 111: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/111.jpg)
Library Consumer Using forks
![Page 112: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/112.jpg)
Library Consumer Using forks
patch it,
![Page 113: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/113.jpg)
Library Consumer Using forks
patch it,fork it,
![Page 114: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/114.jpg)
Library Consumer Using forks
patch it,fork it,
push it…
![Page 115: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/115.jpg)
Library Consumer Using forks
patch it,fork it,
push it…wait for it.
![Page 116: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/116.jpg)
Library Consumer Using forks
patch it,fork it,
push it…wait for it.
![Page 117: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/117.jpg)
Library Consumer Using forks
symfony/symfony
![Page 118: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/118.jpg)
Library Consumer Using forks
symfony/symfony
rdohms/symfony
![Page 119: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/119.jpg)
Library Consumer Using forks
symfony/symfony
rdohms/symfony
"repositories": [ { "type": "vcs", "url": "https://github.com/rdohms/symfony" } ]
![Page 120: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/120.jpg)
Library Consumer Using forks
symfony/symfony
rdohms/symfony
"repositories": [ { "type": "vcs", "url": "https://github.com/rdohms/symfony" } ]
+
![Page 121: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/121.jpg)
Library Consumer Using forks
Do not put forked repositories
on packagist
,
![Page 122: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/122.jpg)
Library Consumer Using forks
"require": { "symfony/symfony": "dev-my-patch as 2.5.0"}
Tip
![Page 123: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/123.jpg)
Library Consumer Composer and deployments
Composer and
production
![Page 124: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/124.jpg)
Library Consumer Composer and deployments
$ composer install --prefer-dist --no-dev --optimize-autoloader
,
![Page 125: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/125.jpg)
Library Consumer Composer and deployments
$ composer install --prefer-dist --no-dev --optimize-autoloader
,
![Page 126: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/126.jpg)
Library Consumer Composer and deployments
$ composer install --prefer-dist --no-dev --optimize-autoloader
,
- Install same versions
- Uses information defined in the composer.lock file
![Page 127: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/127.jpg)
$ composer install --prefer-dist --no-dev --optimize-autoloader
Library Consumer Composer and deployments
,
![Page 128: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/128.jpg)
$ composer install --prefer-dist --no-dev --optimize-autoloader
Library Consumer Composer and deployments
,
- Downloads distribution packages
- Can use local cache for previously downloaded
- No git required
![Page 129: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/129.jpg)
$ composer install --prefer-dist --no-dev --optimize-autoloader
Library Consumer Composer and deployments
,
![Page 130: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/130.jpg)
$ composer install --prefer-dist --no-dev --optimize-autoloader
Library Consumer Composer and deployments
,
- Avoids download unnecessary developer libraries
![Page 131: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/131.jpg)
$ composer install --prefer-dist --no-dev --optimize-autoloader
Library Consumer Composer and deployments
,
![Page 132: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/132.jpg)
$ composer install --prefer-dist --no-dev --optimize-autoloader
Library Consumer Composer and deployments
,
- Generates classmap from PSR-0/4 autoloaders
- Speeds up autoloading
![Page 133: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/133.jpg)
Library Consumer Licensing
$ composer licenses
Name: __root__Version: 1.0.0Licenses: noneDependencies:
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
Tip
![Page 134: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/134.jpg)
Library Consumer Simulating Environments
Tip
Production Server
.
Development Server
.
![Page 135: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/135.jpg)
Library Consumer Simulating Environments
Tip
Production Server
.
Development Server
.PHP 7.0
PHP 5.6
![Page 136: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/136.jpg)
Library Consumer Simulating Environments
"config": { "platform": { "php": “5.6.2”, “ext-mongodb”: “1.1” } },
Tip
Production Server
.
Development Server
.PHP 7.0
PHP 5.6
![Page 137: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/137.jpg)
Library Consumer Simulating Environments
$ composer install —-ignore-platform-reqs
Tip
![Page 138: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/138.jpg)
Library Consumer Private Packages and Proxy
Satis and Toran
![Page 139: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/139.jpg)
composer Packagist
"
Your application
$
Public Repository
#
Library Consumer Private Packages and Proxy
![Page 140: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/140.jpg)
composer
Packagist
"
Your application
$
Public Repository
#
Satis / Toran
"
Private Repository
/
proxy
Library Consumer Private Packages and Proxy
![Page 141: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/141.jpg)
Library Consumer Private Packages and Proxy
toranproxy.comprivate repos, automatic packagist proxy
and support composer development
![Page 142: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/142.jpg)
Library Consumer Tooling
$ composer require jquery/jquery
How many of you?
![Page 143: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/143.jpg)
Library Consumer Tooling
![Page 144: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/144.jpg)
Library Consumer Tooling
![Page 145: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/145.jpg)
Javascript only Developer
Library Consumer Tooling
0 my-js-library
1
![Page 146: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/146.jpg)
Javascript only Developer
Library Consumer Tooling
0 my-js-library! package.json
1
![Page 147: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/147.jpg)
Javascript only Developer
Library Consumer Tooling
0 my-js-library! package.json
! bower.json
1
![Page 148: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/148.jpg)
Javascript only Developer
Library Consumer Tooling
0 my-js-library
! composer.json
! package.json
! bower.json
1
![Page 149: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/149.jpg)
Javascript only Developer
Library Consumer Tooling
0 my-js-library
! composer.json
! package.json
! bower.json
! .gemspec
1
![Page 150: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/150.jpg)
Javascript only Developer
Library Consumer Tooling
0 my-js-library
! composer.json
! package.json
! bower.json
! .gemspec
1
2
2
![Page 151: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/151.jpg)
Library Consumer Tooling
![Page 152: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/152.jpg)
Library Consumer Tooling
![Page 153: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/153.jpg)
Library Consumer Tooling
Right tool.Right job.
![Page 154: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/154.jpg)
Library Consumer One last thing
One last thing…
![Page 155: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/155.jpg)
Library Consumer pickle!
![Page 156: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/156.jpg)
Library Consumer pickle!
$ pickle install memcache
https://wiki.php.net/rfc/picklehttps://github.com/FriendsOfPHP/pickle
![Page 157: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/157.jpg)
Thank you.
https://joind.in/talk/cc531
jobs.usabilla.comWe are hiring!
![Page 158: Composer The Right Way - 010PHP](https://reader035.vdocuments.site/reader035/viewer/2022062905/5870809f1a28ab57368b6497/html5/thumbnails/158.jpg)
Thank you.any questions?
3 http://slides.doh.ms
4 http://doh.ms
5 @rdohms
https://joind.in/talk/cc531
jobs.usabilla.comWe are hiring!