Free Software Developer
 https://github.com/naderman
phpBB Development Lead
 https://www.phpbb.com
Composer Co-Author
 https://getcomposer.org
Working at Forumatic
 https://www.forumatic.com
Engine Yard Community Grant
 https://www.engineyard.com
git clone https://github.com/symfony/standard-edition myproject
Cloning into myproject...
cd myproject/
curl -s http://getcomposer.org/installer | php
All settings correct for using Composer
Composer successfully installed to: /home/bob/myproject/composer.phar
Use it: php composer.phar
php composer.phar install
Installing from lock file
- Package twig/extensions (dev-master)
Downloading
Unpacking archive
Cleaning up
[...]
- Package twig/twig (1.8.0)
Downloading
Unpacking archive
Cleaning up
- Package symfony/symfony (dev-master)
Downloading
Unpacking archive
Cleaning up
Generating autoload files
vendor/
autoload.php
composer/
monolog/
monolog/
symfony/
symfony/
monolog-bundle/
twig/
twig/
extensions/
[...]
{
"require": {
"silex/silex": ">=1.0.0-dev",
"symfony/finder": "2.1-dev",
"twig/twig": "1.*",
"predis/service-provider": "dev-master"
"symfony/console": "~2.1"
},
"require-dev": {
"mikey179/vfsStream": "*"
}
}
user defined, configuration, version constraints
composer update
generated, package metadata, specific versions
composer install
dependencies' code and autoloader
composer status
Libraries/projects define their namespaces:
"autoload": {
"psr-0": {
"Vendor\\Namespace\\Component": "oldsrc/"
},
"psr-4": {
"Vendor\\Namespace\\Component": "src/"
},
"classmap": ["lib/", "VeryOld.php"]
}
oldsrc/Vendor/Namespace/Component/MyClass.php
oldsrc/Vendor/Namespace/Component/ThatClass.php
src/MyClass.php
src/ThatClass.php
Composer builds an autoloader for you:
vendor/autoload.php
Use the generated autoloader:
require __DIR__.'/../vendor/autoload.php';
use Silex\Application;
use Silex\Extension\TwigExtension;
use Symfony\Component\Finder\Finder;
use Symfony\Component\HttpFoundation\Response;
$app = new Application();
// ...
Regenerating the autoloader
composer dump-autoload
composer dump-autoload --no-dev --optimize
--no-dev
--prefer-source
--prefer-dist
--prefer-stable
--prefer-lowest
--ignore-platform-reqs
php composer.phar create-project composer/satis --stability=dev --keep-vcs
{
"name": "My Repository",
"homepage": "http://packages.example.org",
"repositories": [
{"type": "vcs", "url": "http://github.com/company/repo1"},
{"type": "vcs", "url": "http://svn.example.org/repo"},
{"type": "vcs", "url": "http://github.com/company/repo2"}
],
"require-all": true
}
{
"name": "My Repository",
"homepage": "http://packages.example.org",
"repositories": [
{"type": "vcs", "url": "http://github.com/company/repo1"},
{"type": "vcs", "url": "http://svn.example.org/repo"},
{"type": "vcs", "url": "http://github.com/company/repo2"}
],
"require": {
"company/package": "*",
"company/package2": "*",
"company/package3": "2.0.0"
}
}
{
"archive": {
"directory": "dist",
"format": "tar",
"prefix-url": "https://amazing.cdn.example.org",
"skip-dev": true
}
}
php bin/satis build config.json web/
"repositories": [{
"type": "composer",
"url": "http://p.example.org/"
}],
*nix: /home/example/.composer/config.json
Windows: C:\Users\example\AppData\Roaming\Composer\config.json
{
"repositories": [
{
"type": "composer",
"url": "http://p.example.org/"
}
]
}
Use composer config -g -e to open the file
Symfony2, Laravel, Silex, Lithium ...
Assetic, Guzzle, Monolog, Twig, Imagine, ...