Mais conteúdo relacionado Semelhante a Composer (20) Composer2. Wat is composer?
• Managen van afhankelijkheden
• Ontwikkeld voor PHP
• Automatisch downloaden van deze
afhankelijkheden middels
• Te gebruiken via de command-line
Friday, April 26, 13
3. Welke problemen?
• Onnodige ‘requires of includes’ d.m.v
autoloading
• Afhankelijkheden kunnen ook
afhankelijkheden hebben
• Beschrijven van afhankelijkheden die je zelf
nodig hebt
• Verschillende versies van ‘libraries’
Friday, April 26, 13
4. Hoe te gebruiken?
• Download ‘composer.phar’
• Maak een composer.json aan
• php composer.phar install
Friday, April 26, 13
5. composer.json
{
"name":
"symfony/symfony",
"type":
"library",
"description":
"The
Symfony
PHP
framework",
"keywords":
["framework"],
"homepage":
"http://symfony.com",
"license":
"MIT",
"authors":
[
{
"name":
"Fabien
Potencier",
"email":
"fabien@symfony.com"
}
],
"require":
{
"php":
">=5.3.3",
"twig/twig":
"~1.11.5",
"psr/log":
"1.0.*",
"jcid/framework":
"2.0.*@dev"
},
"autoload":
{
"psr-‐0":
{
"Symfony":
"src/"
},
"classmap":
[
"src/Symfony/Component/HttpFoundation/Resources/stubs",
"src/Symfony/Component/Intl/Resources/stubs"
],
"files":
[
"src/Symfony/Component/Intl/Resources/stubs/functions.php"
]
},
"minimum-‐stability":
"dev"
}
Friday, April 26, 13
6. composer.json
{
"name":
"symfony/symfony",
"type":
"library",
"description":
"The
Symfony
PHP
framework",
"keywords":
["framework"],
"homepage":
"http://symfony.com",
"license":
"MIT",
"authors":
[
{
"name":
"Fabien
Potencier",
"email":
"fabien@symfony.com"
}
],
"require":
{
"php":
">=5.3.3",
"twig/twig":
"~1.11.5",
"psr/log":
"1.0.*",
"jcid/framework":
"2.0.*@dev"
},
"autoload":
{
"psr-‐0":
{
"Symfony":
"src/"
},
"classmap":
[
"src/Symfony/Component/HttpFoundation/Resources/stubs",
"src/Symfony/Component/Intl/Resources/stubs"
],
"files":
[
"src/Symfony/Component/Intl/Resources/stubs/functions.php"
]
},
"minimum-‐stability":
"dev"
}
Friday, April 26, 13
7. composer.json
{
"name":
"symfony/symfony",
"type":
"library",
"description":
"The
Symfony
PHP
framework",
"keywords":
["framework"],
"homepage":
"http://symfony.com",
"license":
"MIT",
"authors":
[
{
"name":
"Fabien
Potencier",
"email":
"fabien@symfony.com"
}
],
"require":
{
"php":
">=5.3.3",
"twig/twig":
"~1.11.5",
"psr/log":
"1.0.*",
"jcid/framework":
"2.0.*@dev"
},
"autoload":
{
"psr-‐0":
{
"Symfony":
"src/"
},
"classmap":
[
"src/Symfony/Component/HttpFoundation/Resources/stubs",
"src/Symfony/Component/Intl/Resources/stubs"
],
"files":
[
"src/Symfony/Component/Intl/Resources/stubs/functions.php"
]
},
"minimum-‐stability":
"dev"
}
* library
* project
* metapackage
* composer-installer
* custom
Friday, April 26, 13
8. composer.json
{
"name":
"symfony/symfony",
"type":
"library",
"description":
"The
Symfony
PHP
framework",
"keywords":
["framework"],
"homepage":
"http://symfony.com",
"license":
"MIT",
"authors":
[
{
"name":
"Fabien
Potencier",
"email":
"fabien@symfony.com"
}
],
"require":
{
"php":
">=5.3.3",
"twig/twig":
"~1.11.5",
"psr/log":
"1.0.*",
"jcid/framework":
"2.0.*@dev"
},
"autoload":
{
"psr-‐0":
{
"Symfony":
"src/"
},
"classmap":
[
"src/Symfony/Component/HttpFoundation/Resources/stubs",
"src/Symfony/Component/Intl/Resources/stubs"
],
"files":
[
"src/Symfony/Component/Intl/Resources/stubs/functions.php"
]
},
"minimum-‐stability":
"dev"
}
Friday, April 26, 13
9. composer.json
{
"name":
"symfony/symfony",
"type":
"library",
"description":
"The
Symfony
PHP
framework",
"keywords":
["framework"],
"homepage":
"http://symfony.com",
"license":
"MIT",
"authors":
[
{
"name":
"Fabien
Potencier",
"email":
"fabien@symfony.com"
}
],
"require":
{
"php":
">=5.3.3",
"twig/twig":
"~1.11.5",
"psr/log":
"1.0.*",
"jcid/framework":
"2.0.*@dev"
},
"autoload":
{
"psr-‐0":
{
"Symfony":
"src/"
},
"classmap":
[
"src/Symfony/Component/HttpFoundation/Resources/stubs",
"src/Symfony/Component/Intl/Resources/stubs"
],
"files":
[
"src/Symfony/Component/Intl/Resources/stubs/functions.php"
]
},
"minimum-‐stability":
"dev"
}
Friday, April 26, 13
10. composer.json
{
"name":
"symfony/symfony",
"type":
"library",
"description":
"The
Symfony
PHP
framework",
"keywords":
["framework"],
"homepage":
"http://symfony.com",
"license":
"MIT",
"authors":
[
{
"name":
"Fabien
Potencier",
"email":
"fabien@symfony.com"
}
],
"require":
{
"php":
">=5.3.3",
"twig/twig":
"~1.11.5",
"psr/log":
"1.0.*",
"jcid/framework":
"2.0.*@dev"
},
"autoload":
{
"psr-‐0":
{
"Symfony":
"src/"
},
"classmap":
[
"src/Symfony/Component/HttpFoundation/Resources/stubs",
"src/Symfony/Component/Intl/Resources/stubs"
],
"files":
[
"src/Symfony/Component/Intl/Resources/stubs/functions.php"
]
},
"minimum-‐stability":
"dev"
}
Friday, April 26, 13
11. composer.json
{
"name":
"symfony/symfony",
"type":
"library",
"description":
"The
Symfony
PHP
framework",
"keywords":
["framework"],
"homepage":
"http://symfony.com",
"license":
"MIT",
"authors":
[
{
"name":
"Fabien
Potencier",
"email":
"fabien@symfony.com"
}
],
"require":
{
"php":
">=5.3.3",
"twig/twig":
"~1.11.5",
"psr/log":
"1.0.*",
"jcid/framework":
"2.0.*@dev"
},
"autoload":
{
"psr-‐0":
{
"Symfony":
"src/"
},
"classmap":
[
"src/Symfony/Component/HttpFoundation/Resources/stubs",
"src/Symfony/Component/Intl/Resources/stubs"
],
"files":
[
"src/Symfony/Component/Intl/Resources/stubs/functions.php"
]
},
"minimum-‐stability":
"dev"
}
Friday, April 26, 13
12. composer.json
{
"name":
"symfony/symfony",
"type":
"library",
"description":
"The
Symfony
PHP
framework",
"keywords":
["framework"],
"homepage":
"http://symfony.com",
"license":
"MIT",
"authors":
[
{
"name":
"Fabien
Potencier",
"email":
"fabien@symfony.com"
}
],
"require":
{
"php":
">=5.3.3",
"twig/twig":
"~1.11.5",
"psr/log":
"1.0.*",
"jcid/framework":
"2.0.*@dev"
},
"autoload":
{
"psr-‐0":
{
"Symfony":
"src/"
},
"classmap":
[
"src/Symfony/Component/HttpFoundation/Resources/stubs",
"src/Symfony/Component/Intl/Resources/stubs"
],
"files":
[
"src/Symfony/Component/Intl/Resources/stubs/functions.php"
]
},
"minimum-‐stability":
"dev"
}
Friday, April 26, 13
13. composer.json
{
"name":
"symfony/symfony",
"type":
"library",
"description":
"The
Symfony
PHP
framework",
"keywords":
["framework"],
"homepage":
"http://symfony.com",
"license":
"MIT",
"authors":
[
{
"name":
"Fabien
Potencier",
"email":
"fabien@symfony.com"
}
],
"require":
{
"php":
">=5.3.3",
"twig/twig":
"~1.11.5",
"psr/log":
"1.0.*",
"jcid/framework":
"2.0.*@dev"
},
"autoload":
{
"psr-‐0":
{
"Symfony":
"src/"
},
"classmap":
[
"src/Symfony/Component/HttpFoundation/Resources/stubs",
"src/Symfony/Component/Intl/Resources/stubs"
],
"files":
[
"src/Symfony/Component/Intl/Resources/stubs/functions.php"
]
},
"minimum-‐stability":
"dev"
}
Friday, April 26, 13
14. composer.json
{
"name":
"symfony/symfony",
"type":
"library",
"description":
"The
Symfony
PHP
framework",
"keywords":
["framework"],
"homepage":
"http://symfony.com",
"license":
"MIT",
"authors":
[
{
"name":
"Fabien
Potencier",
"email":
"fabien@symfony.com"
}
],
"require":
{
"php":
">=5.3.3",
"twig/twig":
"~1.11.5",
"psr/log":
"1.0.*",
"jcid/framework":
"2.0.*@dev"
},
"autoload":
{
"psr-‐0":
{
"Symfony":
"src/"
},
"classmap":
[
"src/Symfony/Component/HttpFoundation/Resources/stubs",
"src/Symfony/Component/Intl/Resources/stubs"
],
"files":
[
"src/Symfony/Component/Intl/Resources/stubs/functions.php"
]
},
"minimum-‐stability":
"dev"
}
>=1.11.5,<1.12
Friday, April 26, 13
15. composer.json
{
"name":
"symfony/symfony",
"type":
"library",
"description":
"The
Symfony
PHP
framework",
"keywords":
["framework"],
"homepage":
"http://symfony.com",
"license":
"MIT",
"authors":
[
{
"name":
"Fabien
Potencier",
"email":
"fabien@symfony.com"
}
],
"require":
{
"php":
">=5.3.3",
"twig/twig":
"~1.11.5",
"psr/log":
"1.0.*",
"jcid/framework":
"2.0.*@dev"
},
"autoload":
{
"psr-‐0":
{
"Symfony":
"src/"
},
"classmap":
[
"src/Symfony/Component/HttpFoundation/Resources/stubs",
"src/Symfony/Component/Intl/Resources/stubs"
],
"files":
[
"src/Symfony/Component/Intl/Resources/stubs/functions.php"
]
},
"minimum-‐stability":
"dev"
}
Friday, April 26, 13
16. composer.json
{
"name":
"symfony/symfony",
"type":
"library",
"description":
"The
Symfony
PHP
framework",
"keywords":
["framework"],
"homepage":
"http://symfony.com",
"license":
"MIT",
"authors":
[
{
"name":
"Fabien
Potencier",
"email":
"fabien@symfony.com"
}
],
"require":
{
"php":
">=5.3.3",
"twig/twig":
"~1.11.5",
"psr/log":
"1.0.*",
"jcid/framework":
"2.0.*@dev"
},
"autoload":
{
"psr-‐0":
{
"Symfony":
"src/"
},
"classmap":
[
"src/Symfony/Component/HttpFoundation/Resources/stubs",
"src/Symfony/Component/Intl/Resources/stubs"
],
"files":
[
"src/Symfony/Component/Intl/Resources/stubs/functions.php"
]
},
"minimum-‐stability":
"dev"
}
* dev
* alpha
* beta
* RC
* stable
Friday, April 26, 13
17. composer.json
{
"name":
"symfony/symfony",
"type":
"library",
"description":
"The
Symfony
PHP
framework",
"keywords":
["framework"],
"homepage":
"http://symfony.com",
"license":
"MIT",
"authors":
[
{
"name":
"Fabien
Potencier",
"email":
"fabien@symfony.com"
}
],
"require":
{
"php":
">=5.3.3",
"twig/twig":
"~1.11.5",
"psr/log":
"1.0.*",
"jcid/framework":
"2.0.*@dev"
},
"autoload":
{
"psr-‐0":
{
"Symfony":
"src/"
},
"classmap":
[
"src/Symfony/Component/HttpFoundation/Resources/stubs",
"src/Symfony/Component/Intl/Resources/stubs"
],
"files":
[
"src/Symfony/Component/Intl/Resources/stubs/functions.php"
]
},
"minimum-‐stability":
"dev"
}
Friday, April 26, 13
18. composer.json
{
"name":
"symfony/symfony",
"type":
"library",
"description":
"The
Symfony
PHP
framework",
"keywords":
["framework"],
"homepage":
"http://symfony.com",
"license":
"MIT",
"authors":
[
{
"name":
"Fabien
Potencier",
"email":
"fabien@symfony.com"
}
],
"require":
{
"php":
">=5.3.3",
"twig/twig":
"~1.11.5",
"psr/log":
"1.0.*",
"jcid/framework":
"2.0.*@dev"
},
"autoload":
{
"psr-‐0":
{
"Symfony":
"src/"
},
"classmap":
[
"src/Symfony/Component/HttpFoundation/Resources/stubs",
"src/Symfony/Component/Intl/Resources/stubs"
],
"files":
[
"src/Symfony/Component/Intl/Resources/stubs/functions.php"
]
},
"minimum-‐stability":
"dev"
}
Friday, April 26, 13
19. composer.json
{
"name":
"symfony/symfony",
"type":
"library",
"description":
"The
Symfony
PHP
framework",
"keywords":
["framework"],
"homepage":
"http://symfony.com",
"license":
"MIT",
"authors":
[
{
"name":
"Fabien
Potencier",
"email":
"fabien@symfony.com"
}
],
"require":
{
"php":
">=5.3.3",
"twig/twig":
"~1.11.5",
"psr/log":
"1.0.*",
"jcid/framework":
"2.0.*@dev"
},
"autoload":
{
"psr-‐0":
{
"Symfony":
"src/"
},
"classmap":
[
"src/Symfony/Component/HttpFoundation/Resources/stubs",
"src/Symfony/Component/Intl/Resources/stubs"
],
"files":
[
"src/Symfony/Component/Intl/Resources/stubs/functions.php"
]
},
"minimum-‐stability":
"dev"
}
Friday, April 26, 13
20. composer.json
{
"name":
"symfony/symfony",
"type":
"library",
"description":
"The
Symfony
PHP
framework",
"keywords":
["framework"],
"homepage":
"http://symfony.com",
"license":
"MIT",
"authors":
[
{
"name":
"Fabien
Potencier",
"email":
"fabien@symfony.com"
}
],
"require":
{
"php":
">=5.3.3",
"twig/twig":
"~1.11.5",
"psr/log":
"1.0.*",
"jcid/framework":
"2.0.*@dev"
},
"autoload":
{
"psr-‐0":
{
"Symfony":
"src/"
},
"classmap":
[
"src/Symfony/Component/HttpFoundation/Resources/stubs",
"src/Symfony/Component/Intl/Resources/stubs"
],
"files":
[
"src/Symfony/Component/Intl/Resources/stubs/functions.php"
]
},
"minimum-‐stability":
"dev"
}
Friday, April 26, 13
21. composer.json
{
"name":
"symfony/symfony",
"type":
"library",
"description":
"The
Symfony
PHP
framework",
"keywords":
["framework"],
"homepage":
"http://symfony.com",
"license":
"MIT",
"authors":
[
{
"name":
"Fabien
Potencier",
"email":
"fabien@symfony.com"
}
],
"require":
{
"php":
">=5.3.3",
"twig/twig":
"~1.11.5",
"psr/log":
"1.0.*",
"jcid/framework":
"2.0.*@dev"
},
"autoload":
{
"psr-‐0":
{
"Symfony":
"src/"
},
"classmap":
[
"src/Symfony/Component/HttpFoundation/Resources/stubs",
"src/Symfony/Component/Intl/Resources/stubs"
],
"files":
[
"src/Symfony/Component/Intl/Resources/stubs/functions.php"
]
},
"minimum-‐stability":
"dev"
}
Friday, April 26, 13
25. satis.json
{
"name": "My Repository",
"homepage": "http://packages.example.org",
"repositories": [
{ "type": "vcs", "url": "http://github.com/mycompany/privaterepo" },
{ "type": "vcs", "url": "http://svn.example.org/private/repo" },
{ "type": "vcs", "url": "http://github.com/mycompany/privaterepo2" }
],
"require-all": true
}
Friday, April 26, 13
26. composer.json
{
! "require": {
! ! "jcid/framework": "2.0.*",
! },
! "repositories": [
! ! {
! ! ! "type": "composer",
! ! ! "url": "http://source.jcid.nl/bundles/"
! ! }
! ]
}
Friday, April 26, 13
28. Custom-Installer
• Niet standaard manier voor installatie
• Custom install path
• Extra code vooraf/achteraf
• Aantal mogelijkheden geleverd vanuit
composer
Friday, April 26, 13
29. Installers
• AGL agl-
• CakePHP 2+ cakephp-
• CodeIgniter codeigniter-
• Drupal drupal-
• FuelPHP v1.x fuel-
• Joomla joomla-
• Kohana kohana-
• Laravel laravel-
• Lithium lithium-
• Magento magento-
• Mako mako-
• MediaWiki mediawiki-
• phpBB phpbb-
• PPI ppi-
• SilverStripe silverstripe-
• Symfony1 symfony1-
Friday, April 26, 13
30. CakePHP Plugin
{
"name":
"you/ftp",
"type":
"cakephp-‐plugin",
"require":
{
"composer/installers":
"~1.0"
}
}
{
"require":
{
"you/ftp":
"~1.0"
}
}
Friday, April 26, 13