Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Composer, @PHPBelfast #2

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

Composer, @PHPBelfast #2

Introduction to Composer and how to utilise it's power for creating projects with ease.

Avatar for Christopher Turner

Christopher Turner

September 26, 2013
Tweet

Other Decks in Programming

Transcript

  1. What  Is  A  Dependency  Manager?   A  uAlity  to  manage

     a  project’s   dependencies.   Manages  dependencies  of   dependencies  and  so  on…  
  2. Hello,  Composer!   •  PHP’s  soluAon  to  Dependency  Management  

    •  Inspired  by  Node’s  NPM  (Node  Package  Manager)   •  Open  Source   •  PSR-­‐0   •  Symfony  community  
  3. Packagist   •  hOps://packagist.org   •  Composer  packages  archive  

    •  Searching  libraries   •  CreaAng  new  projects   •  Requiring  libraries  
  4. $ composer create-project •  Downloads  libraries  package   •  Requires

     libraries  dependencies   •  Project  package  ===  library  package  
  5. composer.json   •  Sets  up  Project  as  a  Composer  package

      •  Defines  project  dependencies   •  Sets  dependency  constraints   •  Maps  autoloaders   •  Execute  pre/post  scripts   •  Commit  composer.json  to  your  repository  
  6. composer.lock   •  Records  required  dependencies   •  Locks  dependency

     versions   •  Used  for  installing  your  project  elsewhere   • Commit  composer.lock   to  your  repository!!!!!!!  
  7. $ composer install •  Finds  dependencies  in  composer.json   • 

    Downloads  missing  libraries   •  Updates  libraries  set  in  composer.lock  
  8. $ composer update •  Checks  libraries  for  updates   • 

    Downloads  out  of  date  dependencies   •  Updates  composer.lock  
  9. Using  Your  Dependencies   <?php // project root require_once(__DIR__.’/vendor/autoload.php’); That’s

     it,  simples.   •  All  libraries  loaded  via   – PSR-­‐0  ||  PEAR  ||  Class  Maps  ||  SPL  
  10. Dependency  DefiniAons   •  Libraries  are  defined  like:    <vendor>/<package>

    •  SemanAc-­‐like  versioning:    1.2.3-suffix “symfony/forms”: “2.3.*”, “knplabs/knp-menu”: “1.0-RC2”
  11. $ composer dump-autoload -o •  Autoloaders  are  heavy  processes  

    •  Symfony,  Zend,  Laravel  etc.   – several  thousand  classes   •  Always  opAmise  when  in  producAon