COMPOSER
A PHP dependency manager
Who am I?
• Ujjwal Ojha
• BSc. CSIT
• Hrevert Technologies
• Web application development
Table Of Contents
• Introduction
• What is dependency?
• Why not Pear?
• Installation
• Basic Usage
Introduction
• PHP dependency manager
• Very useful to work with third party libraries
• Similar to npm for node.js, Bundler for Ruby, or pip for

Python
What is dependency?
Recursive Dependencies
Two Way Recursive Dependencies
Why not Pear?
• Pears installs packages globally
• With Pear, your code is scattered throughout the machine.
Installation
mkdir myprojectname

cd myprojectname

curl -s https://getcomposer.org/installer | php
Create composer.json
{

"require": {
"silex/silex": "~1.0"
}
}

php composer.phar install
Loading composer repositories with package information
Installing dependencies
- Installing psr/log (1.0.0)
Loading from cache
- Installing symfony/routing (v2.2.1)
Downloading: 100%
- Installing symfony/http-foundation (v2.2.1)
Downloading: 100%
- Installing symfony/event-dispatcher (v2.2.1)
Loading from cache
- Installing symfony/http-kernel (v2.2.1)
Downloading: 100%
- Installing pimple/pimple (v1.0.2)
Downloading: 100%
- Installing silex/silex (v1.0.0)
Downloading: 100%
Writing lock file
Generating autoload files

Your
dependencies
dependency

Your
dependency
Autoloading
Composer generates an
autoload file for all your
Dependencies
Autoloader
Supports

PSR-0 Autoloader
PSR-4 Autoloader
Classmap Autoloader
Autoloader usage

<?php
// From your app`s bootstrap.php
include “vendor/autoload.php”;
Scripts
Perform custom actions during installation and update
"scripts": {
"post-install-cmd": [
"Sensio...ComposerScriptHandler::buildBootstrap",
"Sensio...ComposerScriptHandler::clearCache",
"Sensio...ComposerScriptHandler::installAssets",
"Sensio...ComposerScriptHandler::installRequirementsFile
"
],
"post-update-cmd": [
“Sensio...ComposerScriptHandler::buildBootstrap",
"Sensio...ComposerScriptHandler::clearCache",
"Sensio...ComposerScriptHandler::installAssets",
"Sensio...ComposerScriptHandler::installRequirementsFile
"
]
},
Non-composer packages
{
"repositories": [
{
"type": "package",
"package": {
"name": "smarty/smarty",
"version": "3.1.7",
"dist": {
"url": "http://www.smarty.net/files/Smarty-3.1.7.zip",
"type": "zip"
},
"source": {
"url": "http://smarty-php.googlecode.com/svn/",
"type": "svn"
}
}
}
]
}
Private dependencies with Satis
{
"repositories": [
{ "type": "composer", "url": "http://packages.example.org/" }
],
"require": {
"company/package": "1.2.0",
"company/package2": “1.5.2",
}
}
Thank You

Questions?

Ujjwal Ojha

Composer | PHP Dependency Manager