SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
Composer
Cees van Egmond
Cliff Odijk
Friday, April 26, 13
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
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
Hoe te gebruiken?
• Download ‘composer.phar’
• Maak een composer.json aan
• php composer.phar install
Friday, April 26, 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
•require	
  __DIR__.'/../
vendor/autoload.php';
Friday, April 26, 13
Really?
Friday, April 26, 13
Satis
• Repository Generator
• Statisch
• File based
Friday, April 26, 13
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
composer.json
{
! "require": {
! ! "jcid/framework": "2.0.*",
! },
! "repositories": [
! ! {
! ! ! "type": "composer",
! ! ! "url": "http://source.jcid.nl/bundles/"
! ! }
! ]
}
Friday, April 26, 13
Packagist
• Repository Generator
• Dynamisch
• Volledige website
• packagist.org standaard repo website
• Open Source
Friday, April 26, 13
Custom-Installer
• Niet standaard manier voor installatie
• Custom install path
• Extra code vooraf/achteraf
• Aantal mogelijkheden geleverd vanuit
composer
Friday, April 26, 13
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
CakePHP Plugin
{
	
  	
  	
  	
  "name":	
  "you/ftp",
	
  	
  	
  	
  "type":	
  "cakephp-­‐plugin",
	
  	
  	
  	
  "require":	
  {
	
  	
  	
  	
  	
  	
  	
  	
  "composer/installers":	
  "~1.0"
	
  	
  	
  	
  }
}
{
	
  	
  	
  	
  "require":	
  {
	
  	
  	
  	
  	
  	
  	
  	
  "you/ftp":	
  "~1.0"
	
  	
  	
  	
  }
}
Friday, April 26, 13
Q&A
Friday, April 26, 13

Mais conteúdo relacionado

Mais procurados

Website releases made easy with the PEAR installer, OSCON 2009
Website releases made easy with the PEAR installer, OSCON 2009Website releases made easy with the PEAR installer, OSCON 2009
Website releases made easy with the PEAR installer, OSCON 2009
Helgi Þormar Þorbjörnsson
 
Workshop eZ Publish Caching Mechanisms
Workshop eZ Publish Caching MechanismsWorkshop eZ Publish Caching Mechanisms
Workshop eZ Publish Caching Mechanisms
Kaliop-slide
 
用Tornado开发RESTful API运用
用Tornado开发RESTful API运用用Tornado开发RESTful API运用
用Tornado开发RESTful API运用
Felinx Lee
 
Symfony2: Get your project started
Symfony2: Get your project startedSymfony2: Get your project started
Symfony2: Get your project started
Ryan Weaver
 
Website releases made easy with the PEAR installer - Barcelona 2008
Website releases made easy with the PEAR installer - Barcelona 2008Website releases made easy with the PEAR installer - Barcelona 2008
Website releases made easy with the PEAR installer - Barcelona 2008
Helgi Þormar Þorbjörnsson
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
csukxnr
 
Create dynamic sites with PHP & MySQL
Create dynamic sites with PHP & MySQLCreate dynamic sites with PHP & MySQL
Create dynamic sites with PHP & MySQL
kangaro10a
 

Mais procurados (20)

Hands-on with the Symfony2 Framework
Hands-on with the Symfony2 FrameworkHands-on with the Symfony2 Framework
Hands-on with the Symfony2 Framework
 
Website releases made easy with the PEAR installer, OSCON 2009
Website releases made easy with the PEAR installer, OSCON 2009Website releases made easy with the PEAR installer, OSCON 2009
Website releases made easy with the PEAR installer, OSCON 2009
 
Workshop eZ Publish Caching Mechanisms
Workshop eZ Publish Caching MechanismsWorkshop eZ Publish Caching Mechanisms
Workshop eZ Publish Caching Mechanisms
 
Dependency Management with Composer
Dependency Management with ComposerDependency Management with Composer
Dependency Management with Composer
 
Tornado - different Web programming
Tornado - different Web programmingTornado - different Web programming
Tornado - different Web programming
 
用Tornado开发RESTful API运用
用Tornado开发RESTful API运用用Tornado开发RESTful API运用
用Tornado开发RESTful API运用
 
Symfony2: Get your project started
Symfony2: Get your project startedSymfony2: Get your project started
Symfony2: Get your project started
 
Website releases made easy with the PEAR installer - Barcelona 2008
Website releases made easy with the PEAR installer - Barcelona 2008Website releases made easy with the PEAR installer - Barcelona 2008
Website releases made easy with the PEAR installer - Barcelona 2008
 
Php presentation
Php presentationPhp presentation
Php presentation
 
20110606 e z_flow_gig_v1
20110606 e z_flow_gig_v120110606 e z_flow_gig_v1
20110606 e z_flow_gig_v1
 
香港六合彩
香港六合彩香港六合彩
香港六合彩
 
Create dynamic sites with PHP & MySQL
Create dynamic sites with PHP & MySQLCreate dynamic sites with PHP & MySQL
Create dynamic sites with PHP & MySQL
 
Ant vs Phing
Ant vs PhingAnt vs Phing
Ant vs Phing
 
Php on Windows
Php on WindowsPhp on Windows
Php on Windows
 
Php Power Tools
Php Power ToolsPhp Power Tools
Php Power Tools
 
C make tutorial
C make tutorialC make tutorial
C make tutorial
 
Building and deploying PHP applications with Phing
Building and deploying PHP applications with PhingBuilding and deploying PHP applications with Phing
Building and deploying PHP applications with Phing
 
Build Automation of PHP Applications
Build Automation of PHP ApplicationsBuild Automation of PHP Applications
Build Automation of PHP Applications
 
Web performances : Is It not the right time to (re)consider CMS ?
Web performances : Is It not the right time to (re)consider CMS ?Web performances : Is It not the right time to (re)consider CMS ?
Web performances : Is It not the right time to (re)consider CMS ?
 
Nashville Php Symfony Presentation
Nashville Php Symfony PresentationNashville Php Symfony Presentation
Nashville Php Symfony Presentation
 

Destaque (7)

Geografía fisica de la tierra tema 10
Geografía fisica de la tierra tema 10Geografía fisica de la tierra tema 10
Geografía fisica de la tierra tema 10
 
Presentatie Smartcheck IYB mei 2014
Presentatie Smartcheck IYB mei 2014Presentatie Smartcheck IYB mei 2014
Presentatie Smartcheck IYB mei 2014
 
Fase2 bueno
Fase2 buenoFase2 bueno
Fase2 bueno
 
52629035 fase-investigacion
52629035 fase-investigacion52629035 fase-investigacion
52629035 fase-investigacion
 
Flammability
FlammabilityFlammability
Flammability
 
Gradient free
Gradient freeGradient free
Gradient free
 
Princess + Light
Princess + LightPrincess + Light
Princess + Light
 

Semelhante a Composer

PHP. Trends, implementations, frameworks and solutions
PHP. Trends, implementations, frameworks and solutionsPHP. Trends, implementations, frameworks and solutions
PHP. Trends, implementations, frameworks and solutions
Oleg Zinchenko
 
Symfony Components 2.0 on PHP 5.3
Symfony Components 2.0 on PHP 5.3Symfony Components 2.0 on PHP 5.3
Symfony Components 2.0 on PHP 5.3
Fabien Potencier
 

Semelhante a Composer (20)

Composer
ComposerComposer
Composer
 
Composer
ComposerComposer
Composer
 
PHP. Trends, implementations, frameworks and solutions
PHP. Trends, implementations, frameworks and solutionsPHP. Trends, implementations, frameworks and solutions
PHP. Trends, implementations, frameworks and solutions
 
Mastering composer
Mastering composerMastering composer
Mastering composer
 
Development Workflow Tools for Open-Source PHP Libraries
Development Workflow Tools for Open-Source PHP LibrariesDevelopment Workflow Tools for Open-Source PHP Libraries
Development Workflow Tools for Open-Source PHP Libraries
 
Dependency management in Magento with Composer
Dependency management in Magento with ComposerDependency management in Magento with Composer
Dependency management in Magento with Composer
 
PSR-7 and PSR-15, why can't you ignore them
PSR-7 and PSR-15, why can't you ignore themPSR-7 and PSR-15, why can't you ignore them
PSR-7 and PSR-15, why can't you ignore them
 
Composer 經典食譜
Composer 經典食譜Composer 經典食譜
Composer 經典食譜
 
Exploring Async PHP (SF Live Berlin 2019)
Exploring Async PHP (SF Live Berlin 2019)Exploring Async PHP (SF Live Berlin 2019)
Exploring Async PHP (SF Live Berlin 2019)
 
PHP Dependency Management with Composer
PHP Dependency Management with ComposerPHP Dependency Management with Composer
PHP Dependency Management with Composer
 
Steam Learn: Composer
Steam Learn: ComposerSteam Learn: Composer
Steam Learn: Composer
 
Symfony Components 2.0 on PHP 5.3
Symfony Components 2.0 on PHP 5.3Symfony Components 2.0 on PHP 5.3
Symfony Components 2.0 on PHP 5.3
 
Composer Helpdesk
Composer HelpdeskComposer Helpdesk
Composer Helpdesk
 
Fabien Potencier "Symfony 4 in action"
Fabien Potencier "Symfony 4 in action"Fabien Potencier "Symfony 4 in action"
Fabien Potencier "Symfony 4 in action"
 
Jak se ^bonami\.(cz|pl|sk)$ vešlo do kontejneru
Jak se ^bonami\.(cz|pl|sk)$ vešlo do kontejneruJak se ^bonami\.(cz|pl|sk)$ vešlo do kontejneru
Jak se ^bonami\.(cz|pl|sk)$ vešlo do kontejneru
 
Orange is the new blue: How to port Chrome Extension to Firefox Extension
Orange is the new blue: How to port Chrome Extension to Firefox ExtensionOrange is the new blue: How to port Chrome Extension to Firefox Extension
Orange is the new blue: How to port Chrome Extension to Firefox Extension
 
Puppet Camp Chicago 2014: Smoothing Troubles With Custom Types and Providers ...
Puppet Camp Chicago 2014: Smoothing Troubles With Custom Types and Providers ...Puppet Camp Chicago 2014: Smoothing Troubles With Custom Types and Providers ...
Puppet Camp Chicago 2014: Smoothing Troubles With Custom Types and Providers ...
 
Simplify your professional web development with symfony
Simplify your professional web development with symfonySimplify your professional web development with symfony
Simplify your professional web development with symfony
 
CocoaHeads Rennes #13 : CocoaPods
CocoaHeads Rennes #13 : CocoaPodsCocoaHeads Rennes #13 : CocoaPods
CocoaHeads Rennes #13 : CocoaPods
 
Running Symfony
Running SymfonyRunning Symfony
Running Symfony
 

Composer

  • 1. Composer Cees van Egmond Cliff Odijk Friday, April 26, 13
  • 2. 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
  • 24. Satis • Repository Generator • Statisch • File based 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
  • 27. Packagist • Repository Generator • Dynamisch • Volledige website • packagist.org standaard repo website • Open Source 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