Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Composer - Менеджер пакетов для PHP. Серебрянная пуля?
Search
fwdays
November 14, 2011
Programming
2
1k
Composer - Менеджер пакетов для PHP. Серебрянная пуля?
fwdays
November 14, 2011
Tweet
Share
More Decks by fwdays
See All by fwdays
Symfony best practices и не только Олег Зинченко
fwdays
0
1.9k
Beyond Testing Михаил Боднарчук
fwdays
0
650
Yii2 - на пути от Alpha до GA. Взгляд с практической стороны Александр Бордун
fwdays
0
1.6k
Laravel 4: простота во всем. Евгений Косинский
fwdays
0
860
Маленькая библиотека для большой компании. Антон Шевчук
fwdays
0
3.7k
Phalcon. Что нового? Александр Торош
fwdays
0
960
Выбираем поисковик умом головы. Андрей Аксенов
fwdays
0
1.2k
Past, Present, and Future: The Evolution of PHP Development. Nate Abele
fwdays
0
670
Функциональный тулчейн Nix
fwdays
1
380
Other Decks in Programming
See All in Programming
オブジェクトしこう
okuramasafumi
2
130
CircleCIを活用して AWSへの継続的デリバリーを 実践する
coconala_engineer
1
110
設計の知識と技能で駆動するソフトウェア開発
masuda220
PRO
19
11k
9年開発を牽引して見えてきた、共通化すべきものと個別でつくるもの ~プログラム言語~
shinout
1
300
WebComponentsで フレームワークを1ページに共存させる
webuilder240
0
150
Learning PHP and Static Analysis with PHP Parser
inouehi
1
250
C# 大統一理論推進委員会 会員のための Unity Package Manager プロジェクト構成案
monry
PRO
0
580
Laravel標準バリデーションでできること
hmb_ok
2
360
コミュニティに参加したことで起きた変化
ohmori_yusuke
3
130
Open Source Swiftc Workshop
kitasuke
1
290
ここ1~2年くらいで 使えるようになった(主要ブラウザーの最新版 がすべて対応した ) ウェブの新機能について ランダムに喋る!
myzkyy
9
6.5k
もうすぐ新年度、Babylon.jsがお勧めな3個の理由
hideg
0
170
Featured
See All Featured
The Brand Is Dead. Long Live the Brand.
mthomps
48
22k
Reflections from 52 weeks, 52 projects
jeffersonlam
343
19k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
219
21k
Statistics for Hackers
jakevdp
789
220k
Mobile First: as difficult as doing things right
swwweet
215
8.5k
In The Pink: A Labor of Love
frogandcode
137
21k
Six Lessons from altMBA
skipperchong
19
2.9k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
319
20k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
58
14k
Music & Morning Musume
bryan
39
5.5k
Documentation Writing (for coders)
carmenintech
59
3.8k
The Cult of Friendly URLs
andyhume
73
5.6k
Transcript
Composer — Package Management for PHP. Silver Bullet? Kirill chEbba
Chebunin Billix
[email protected]
http://github.com/chEbba @iamchEbba
Problem
Dependent Libraries
Dependent Libraries
Dependent Libraries
Many Separate Projects
Overview of Tools Python: easy_install, pip Ruby: gems
Java: maven, ivy C#(.NET): NuGet, NuPack PHP: PEAR/Pyrus
PEAR. Why NOT? #pyrus mypear = hack Channel1/Package1
!= Channel2/Package1 No “Source”, only “Dists” Special Package Type (+/-)
Composer. Silver Bullet?
Composer. Simple #wget http://getcomposer.org/composer.phar #vi /path/to/project/.composer.json #php
composer.phar install PEAR package on release?
Composer. File { "require": { "vendor/package1": "1.3.2", "vendor/package2": "1.*", "vendor/package3":
">=2.0.3" } }
Composer. Fundamentals Package Repository = Metadata Storage Separated
from Repository Unique Package Name = vendor/package Different Storage Types (Downloaders) “Source” & “Dist” Dependecy Resolver
Composer. Repository File "composer\/composer":{ "name":"composer\/composer", "description":"Package Manager", "maintainers":[], "versions":{ "master-dev":{
"require":{ "php":">=5.3.0", "symfony\/console":"2.0.5", "symfony\/finder":"2.0.5" } } } }
Composer. Repository PlatformRepository (php & extensions) ComposerRepository ($url/composer.json)
PearRepository (PEAR channel support) VcsRepository (github, git, svn, hg) LocalRepository?
Composer. Downloader "source":{ "type":"git", "url":"http:\/\/github.com\/composer\/composer.git", "reference":"e6c3929ea9f7d732ed3352dc06ed950af140ebf7", "shasum":"" }, "dist":{ "type":"zip",
"url":"<...>e6c3929ea9f7d732ed3352dc06ed950af140ebf7", "shasum":"e32a4bac17d56533393b856699491c4c02f3e1ab", "reference":"e6c3929ea9f7d732ed3352dc06ed950af140ebf7" }
Composer. Downloader ZipDownloader (dist) TarDownloader (dist: tar, tar.gz,
tar.bz2) PharDownloader (dist) PearDownloader (dist: uses tar) GitDownloader (source) HgDownloader (source)
Composer. Installer LibraryInstaller (vendor/*) "composer\/composer":{ "name":"composer\/composer", "description":"Package Manager", "type":"library"
}
Composer. Dependency Resolver OpenSUSE's Libzypp satsolver Requires
Conflicts Provides Replaces Recommends Suggests
Composer. Dependency Resolver "require":{ "php":">=5.3.0", "symfony\/console":"2.0.5", "symfony\/finder":"2.0.5" }
Composer. Autoload PSR-0 Autoloading (.composer/autoload.php) "versions":{ "master-dev":{ "autoload":{ "psr-0":{
"Composer":"src\/" } } } }
Questions? =)