Composer | PHP Dependency Manager

19
COMPOSER A PHP dependency manager

description

A quick start presentation on Composer, PHP dependency manager

Transcript of Composer | PHP Dependency Manager

Page 1: Composer | PHP Dependency Manager

COMPOSERA PHP dependency manager

Page 2: Composer | PHP Dependency Manager

Who am I?• Ujjwal Ojha• BSc. CSIT• Hrevert Technologies• Web application development

Page 3: Composer | PHP Dependency Manager

Table Of Contents• Introduction• What is dependency?• Why not Pear?• Installation• Basic Usage

Page 4: Composer | PHP Dependency Manager

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

Page 5: Composer | PHP Dependency Manager

What is dependency?

Page 6: Composer | PHP Dependency Manager

Recursive Dependencies

Page 7: Composer | PHP Dependency Manager

Two Way Recursive Dependencies

Page 8: Composer | PHP Dependency Manager

Why not Pear?• Pears installs packages globally

• With Pear, your code is scattered throughout the machine.

Page 9: Composer | PHP Dependency Manager

Installation

mkdir myprojectname

cd myprojectname

curl -s https://getcomposer.org/installer | php

Page 10: Composer | PHP Dependency Manager

Create composer.json

php composer.phar install

{"require": {

"silex/silex": "~1.0"}

}

Page 11: Composer | PHP Dependency Manager

Loading composer repositories with package informationInstalling 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 fileGenerating autoload files

Your dependencies dependency

Your dependency

Page 12: Composer | PHP Dependency Manager

Autoloading

Composer generates an

autoload file for all your

Dependencies

Page 13: Composer | PHP Dependency Manager

AutoloaderSupports

PSR-0 AutoloaderPSR-4 Autoloader

Classmap Autoloader

Page 14: Composer | PHP Dependency Manager

Autoloader usage

<?php// From your app`s bootstrap.phpinclude “vendor/autoload.php”;

Page 15: Composer | PHP Dependency Manager

Scripts

Perform custom actions during installation and update

"scripts": { "post-install-cmd": [

"Sensio\\...Composer\\ScriptHandler::buildBootstrap","Sensio\\...Composer\\ScriptHandler::clearCache","Sensio\\...Composer\\ScriptHandler::installAssets","Sensio\\...Composer\\

ScriptHandler::installRequirementsFile" ], "post-update-cmd": [

“Sensio\\...Composer\\ScriptHandler::buildBootstrap","Sensio\\...Composer\\ScriptHandler::clearCache","Sensio\\...Composer\\ScriptHandler::installAssets","Sensio\\...Composer\\

ScriptHandler::installRequirementsFile" ]},

Page 16: Composer | PHP Dependency Manager
Page 17: Composer | PHP Dependency Manager

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" } } } ]}

Page 18: Composer | PHP Dependency Manager

Private dependencies with Satis

{ "repositories": [ { "type": "composer", "url": "http://packages.example.org/" } ], "require": { "company/package": "1.2.0", "company/package2": “1.5.2", } }

Page 19: Composer | PHP Dependency Manager

Thank You

Questions?

Ujjwal Ojha