Composer - Package Management for PHP. Silver Bullet?
-
Upload
kirill-chebunin -
Category
Technology
-
view
6.758 -
download
1
description
Transcript of Composer - Package Management for PHP. Silver Bullet?
Composer — Package Management for PHP.
Silver Bullet?Kirill chEbba ChebuninBillix
[email protected]://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? =)