Weitere ähnliche Inhalte Ähnlich wie Composing Project Dependencies (20) Kürzlich hochgeladen (20) Composing Project Dependencies3. An Example
Project A Project B
PHPUnit PHPUnit
3.7 3.6
Symfony PHPUnit Symfony PHPUnit
YAML Mocks ... YAML Mocks ...
2.2 1.3 1.02 1.1
4. Pear
Project A Project B
Single shared
dependency
PHPUnit No autoloading
3.7
Not part of build
Symfony PHPUnit
YAML Mocks ...
2.2 1.3
5. Submodules
Project A Project B
Symfony PHPUnit Symfony PHPUnit
PHPUnit PHPUnit
YAML Mocks YAML Mocks
3.7 3.6
2.2 1.3 1.02 1.1
No autoloading
No dependency management
6. Composer!
Project A Project B
PHPUnit PHPUnit
3.7 3.6
Symfony PHPUnit Symfony PHPUnit
YAML Mocks ... YAML Mocks ...
2.2 1.3 1.02 1.1
8. Composer is a tool for
dependency management
in PHP. It allows you to
declare the dependent
libraries your project needs
and it will install them in
your project for you.
9. Installation
•Locally
• curl -sS https://getcomposer.org/
installer | php
•Globally
• sudo mv composer.phar /usr/local/bin/
composer
• composer selfupdate <- Do regularly
10. Silex Sample
•Create empty project
folder
• Create composer.json
19. Using Dependencies
•PSR-0 - Standards
defining naming
conventions for
autoloading.
•Use composer generated
autoloader
21. Install vs Update
•composer.lock
•tracks versions of
dependencies used
•commit it
•install-looks for composer.lock
then composer.json
•update-looks straight at
composer.json and updates
composer.lock
22. Working in a Team
•Elect a dependency
manager
• manages and commits
composer files
•add vendor folder to git/svn
ignore
23. Finding Packages
•Packagist
• >composer search ...
• Github
• look for composer.json
24. Older Packages
Define a package
repository in your
composer.json
Specify locations of
sources
Instruct autoloader
• Hopefully its PSR-0 compliant
26. Custom Forks
• Fork on Github
• Add your repo
• Specify your branch
28. More?
• http://getcomposer.org
• http://packagist.org
• https://github.com/php-fig/fig-
standards/blob/master/accepted/
Thanks
Derek Gallo
@derekgallo
http://github.com/drock