Composer - Package Management for PHP. Silver Bullet?

21
Composer — Package Management for PHP. Silver Bullet? Kirill chEbba Chebunin Billix [email protected] http://github.com/chEbba @iamchEbba

description

Modern package management for PHP projects. http://packagist.org/ http://github.com/composer/composer

Transcript of Composer - Package Management for PHP. Silver Bullet?

Page 1: Composer - Package Management for PHP. Silver Bullet?

Composer — Package Management for PHP.

Silver Bullet?Kirill chEbba ChebuninBillix

[email protected]://github.com/chEbba@iamchEbba

Page 2: Composer - Package Management for PHP. Silver Bullet?

Problem

Page 3: Composer - Package Management for PHP. Silver Bullet?

Dependent Libraries

Page 4: Composer - Package Management for PHP. Silver Bullet?

Dependent Libraries

Page 5: Composer - Package Management for PHP. Silver Bullet?

Dependent Libraries

Page 6: Composer - Package Management for PHP. Silver Bullet?

Many Separate Projects

Page 7: Composer - Package Management for PHP. Silver Bullet?

Overview of Tools

Python: easy_install, pip

Ruby: gems

Java: maven, ivy

C#(.NET): NuGet, NuPack

PHP: PEAR/Pyrus

Page 8: Composer - Package Management for PHP. Silver Bullet?

PEAR. Why NOT?

#pyrus mypear = hack

Channel1/Package1 != Channel2/Package1

No “Source”, only “Dists”

Special Package Type (+/-)

Page 9: Composer - Package Management for PHP. Silver Bullet?

Composer. Silver Bullet?

Page 10: Composer - Package Management for PHP. Silver Bullet?

Composer. Simple

#wget http://getcomposer.org/composer.phar

#vi /path/to/project/.composer.json

#php composer.phar install

PEAR package on release?

Page 11: Composer - Package Management for PHP. Silver Bullet?

Composer. File

{

"require": {

"vendor/package1": "1.3.2",

"vendor/package2": "1.*",

"vendor/package3": ">=2.0.3"

}

}

Page 12: Composer - Package Management for PHP. Silver Bullet?

Composer. Fundamentals

Package Repository = Metadata

Storage Separated from Repository

Unique Package Name = vendor/package

Different Storage Types (Downloaders)

“Source” & “Dist”

Dependecy Resolver

Page 13: Composer - Package Management for PHP. Silver Bullet?

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" } } }}

Page 14: Composer - Package Management for PHP. Silver Bullet?

Composer. Repository

PlatformRepository (php & extensions)

ComposerRepository ($url/composer.json)

PearRepository (PEAR channel support)

VcsRepository (github, git, svn, hg)

LocalRepository?

Page 15: Composer - Package Management for PHP. Silver Bullet?

Composer. Downloader

"source":{ "type":"git", "url":"http:\/\/github.com\/composer\/composer.git", "reference":"e6c3929ea9f7d732ed3352dc06ed950af140ebf7", "shasum":""},

"dist":{ "type":"zip", "url":"<...>e6c3929ea9f7d732ed3352dc06ed950af140ebf7", "shasum":"e32a4bac17d56533393b856699491c4c02f3e1ab", "reference":"e6c3929ea9f7d732ed3352dc06ed950af140ebf7"}

Page 16: Composer - Package Management for PHP. Silver Bullet?

Composer. Downloader

ZipDownloader (dist)

TarDownloader (dist: tar, tar.gz, tar.bz2)

PharDownloader (dist)

PearDownloader (dist: uses tar)

GitDownloader (source)

HgDownloader (source)

Page 17: Composer - Package Management for PHP. Silver Bullet?

Composer. Installer

LibraryInstaller (vendor/*)

"composer\/composer":{ "name":"composer\/composer", "description":"Package Manager", "type":"library"}

Page 18: Composer - Package Management for PHP. Silver Bullet?

Composer. Dependency Resolver

OpenSUSE's Libzypp satsolver

Requires

Conflicts

Provides

Replaces

Recommends

Suggests

Page 19: Composer - Package Management for PHP. Silver Bullet?

Composer. Dependency Resolver

"require":{ "php":">=5.3.0", "symfony\/console":"2.0.5", "symfony\/finder":"2.0.5"}

Page 20: Composer - Package Management for PHP. Silver Bullet?

Composer. Autoload

PSR-0 Autoloading (.composer/autoload.php)

"versions":{ "master-dev":{ "autoload":{ "psr-0":{ "Composer":"src\/" } } }}

Page 21: Composer - Package Management for PHP. Silver Bullet?

Questions? =)