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
1.1k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Composer - Менеджер пакетов для PHP. Серебрянная пуля?
fwdays
November 14, 2011
More Decks by fwdays
See All by fwdays
Symfony best practices и не только Олег Зинченко
fwdays
0
2.2k
Beyond Testing Михаил Боднарчук
fwdays
0
870
Yii2 - на пути от Alpha до GA. Взгляд с практической стороны Александр Бордун
fwdays
0
2k
Laravel 4: простота во всем. Евгений Косинский
fwdays
0
1.1k
Маленькая библиотека для большой компании. Антон Шевчук
fwdays
0
3.9k
Phalcon. Что нового? Александр Торош
fwdays
0
1.2k
Выбираем поисковик умом головы. Андрей Аксенов
fwdays
0
1.5k
Past, Present, and Future: The Evolution of PHP Development. Nate Abele
fwdays
0
880
Функциональный тулчейн Nix
fwdays
1
520
Other Decks in Programming
See All in Programming
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
790
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
340
Laravel Boostに学ぶ、AIにPHPを書かせる技術 〜OSSの実装から蒸留するエージェント制御の王道〜
kentaroutakeda
3
630
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
150
Detecting Compromised CI with eBPF and Cilium Tetragon
lizrice
0
100
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
170
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
160
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
130
Google Apps Script で Ruby を動かす
kawahara
0
130
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
630
Built Our Own Background Agent at LayerX #aidevex_findy
layerx
PRO
9
4.6k
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
630
Featured
See All Featured
Fireside Chat
paigeccino
42
4k
Balancing Empowerment & Direction
lara
6
1.2k
The SEO Collaboration Effect
kristinabergwall1
1
510
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.4k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Evolving SEO for Evolving Search Engines
ryanjones
0
250
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.5k
Building AI with AI
inesmontani
PRO
1
1.1k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Building Adaptive Systems
keathley
44
3.2k
Build your cross-platform service in a week with App Engine
jlugia
234
19k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
380
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? =)