Composer

331 views
243 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
331
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Composer

  1. 1. ComposerCees van EgmondCliff OdijkFriday, April 26, 13
  2. 2. Wat is composer?• Managen van afhankelijkheden• Ontwikkeld voor PHP• Automatisch downloaden van dezeafhankelijkheden middels• Te gebruiken via de command-lineFriday, April 26, 13
  3. 3. Welke problemen?• Onnodige ‘requires of includes’ d.m.vautoloading• Afhankelijkheden kunnen ookafhankelijkheden hebben• Beschrijven van afhankelijkheden die je zelfnodig hebt• Verschillende versies van ‘libraries’Friday, April 26, 13
  4. 4. Hoe te gebruiken?• Download ‘composer.phar’• Maak een composer.json aan• php composer.phar installFriday, April 26, 13
  5. 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. 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. 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* customFriday, April 26, 13
  8. 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. 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. 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. 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. 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. 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. 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.12Friday, April 26, 13
  15. 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. 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* stableFriday, April 26, 13
  17. 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. 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. 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. 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. 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
  22. 22. •require  __DIR__./../vendor/autoload.php;Friday, April 26, 13
  23. 23. Really?Friday, April 26, 13
  24. 24. Satis• Repository Generator• Statisch• File basedFriday, April 26, 13
  25. 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. 26. composer.json{! "require": {! ! "jcid/framework": "2.0.*",! },! "repositories": [! ! {! ! ! "type": "composer",! ! ! "url": "http://source.jcid.nl/bundles/"! ! }! ]}Friday, April 26, 13
  27. 27. Packagist• Repository Generator• Dynamisch• Volledige website• packagist.org standaard repo website• Open SourceFriday, April 26, 13
  28. 28. Custom-Installer• Niet standaard manier voor installatie• Custom install path• Extra code vooraf/achteraf• Aantal mogelijkheden geleverd vanuitcomposerFriday, April 26, 13
  29. 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. 30. CakePHP Plugin{        "name":  "you/ftp",        "type":  "cakephp-­‐plugin",        "require":  {                "composer/installers":  "~1.0"        }}{        "require":  {                "you/ftp":  "~1.0"        }}Friday, April 26, 13
  31. 31. Q&AFriday, April 26, 13

×