Composer

80
COMPOSER E le dipendenze non sono più un problema #pugMi 16/10/2012 martedì 16 ottobre 12

description

Presentazione di composer per l'incontro del PHP User Group Milano del 16 ottobre 2012

Transcript of Composer

Page 1: Composer

COMPOSERE le dipendenze non sono più un problema

#pugMi16/10/2012

martedì 16 ottobre 12

Page 2: Composer

martedì 16 ottobre 12

Page 3: Composer

Esiste già PEAR!

martedì 16 ottobre 12

Page 4: Composer

Esiste già PEAR!

★ installazione poco pulita

martedì 16 ottobre 12

Page 5: Composer

Esiste già PEAR!

★ installazione poco pulita

★ canali sparsi

martedì 16 ottobre 12

Page 6: Composer

Esiste già PEAR!

★ installazione poco pulita

★ canali sparsi

★ standard troppo restrittivi

martedì 16 ottobre 12

Page 7: Composer

Vantaggi di composer

martedì 16 ottobre 12

Page 8: Composer

Vantaggi di composer★ installazione legata al

progetto

martedì 16 ottobre 12

Page 9: Composer

Vantaggi di composer★ installazione legata al

progetto

★ repository centrali

martedì 16 ottobre 12

Page 10: Composer

Vantaggi di composer★ installazione legata al

progetto

★ repository centrali

★ non esiste processo di approvazione

martedì 16 ottobre 12

Page 11: Composer

Vantaggi di composer★ installazione legata al

progetto

★ repository centrali

★ non esiste processo di approvazione

★ tutte le dipendenze sono gestite da un unico file

martedì 16 ottobre 12

Page 12: Composer

Vantaggi di composer★ installazione legata al

progetto

★ repository centrali

★ non esiste processo di approvazione

★ tutte le dipendenze sono gestite da un unico file

★ composer.lock

martedì 16 ottobre 12

Page 13: Composer

Problema

martedì 16 ottobre 12

Page 14: Composer

ProblemaHo bisogno di gestire delle versioni specifiche

delle librerie che utilizza il mio progetto.

martedì 16 ottobre 12

Page 15: Composer

ProblemaHo bisogno di gestire delle versioni specifiche

delle librerie che utilizza il mio progetto.

Ho bisogno di condividerle con i miei colleghi,con l’ambiente di sviluppo e quello di produzione.

martedì 16 ottobre 12

Page 16: Composer

ProblemaHo bisogno di gestire delle versioni specifiche

delle librerie che utilizza il mio progetto.

Ho bisogno di condividerle con i miei colleghi,con l’ambiente di sviluppo e quello di produzione.

COMPOSER!

martedì 16 ottobre 12

Page 17: Composer

composer

martedì 16 ottobre 12

Page 18: Composer

composer

Composer è un gestore di dipendenze per progettoche permette di specificare le versioni specifiche

delle librerie utilizzate.

martedì 16 ottobre 12

Page 19: Composer

composer

Composer è un gestore di dipendenze per progettoche permette di specificare le versioni specifiche

delle librerie utilizzate.

In senso opposto, permette di distribuire le mie librerie attraverseo packagist.com e di

non preoccuparmi delle dipendenze.

martedì 16 ottobre 12

Page 20: Composer

martedì 16 ottobre 12

Page 21: Composer

Installazione

martedì 16 ottobre 12

Page 22: Composer

Installazione

$ curl -s http://getcomposer.org/installer | php

martedì 16 ottobre 12

Page 23: Composer

Installazione

$ curl -s http://getcomposer.org/installer | php

$ curl -s http://getcomposer.org/installer | php -- --install-dir=bin

martedì 16 ottobre 12

Page 24: Composer

Installazione

$ curl -s http://getcomposer.org/installer | php

$ curl -s http://getcomposer.org/installer | php -- --install-dir=bin

$ composer.phar self-update

martedì 16 ottobre 12

Page 25: Composer

composer.json

martedì 16 ottobre 12

Page 26: Composer

composer.json{ "require": { "silex/silex": "1.0.*" },

"minimum-stability": "dev"}

martedì 16 ottobre 12

Page 27: Composer

composer.json{ "require": { "silex/silex": "1.0.*" },

"minimum-stability": "dev"}

Root del progetto

martedì 16 ottobre 12

Page 28: Composer

composer.json{ "require": { "silex/silex": "1.0.*" },

"minimum-stability": "dev"}

Root del progetto Require

martedì 16 ottobre 12

Page 29: Composer

composer.json{ "require": { "silex/silex": "1.0.*" },

"minimum-stability": "dev"}

Root del progetto Require Minimum stability

martedì 16 ottobre 12

Page 30: Composer

martedì 16 ottobre 12

Page 31: Composer

Bootstrap progetto

martedì 16 ottobre 12

Page 32: Composer

Bootstrap progetto

$ composer.phar create-project fabpot/silex-skeleton ~/dev/myproject

martedì 16 ottobre 12

Page 33: Composer

Bootstrap progetto

$ composer.phar create-project fabpot/silex-skeleton ~/dev/myproject

TIP: possiamo creare un progetto, eliminare le librerie che non ci servono da composer.json e rilanciare$ php composer.phar update

martedì 16 ottobre 12

Page 34: Composer

Contribuire a un progetto

martedì 16 ottobre 12

Page 35: Composer

Contribuire a un progetto

$ composer.phar create-project dms/dms --dev ~/dev/oss/dms

martedì 16 ottobre 12

Page 36: Composer

Contribuire a un progetto

$ composer.phar create-project dms/dms --dev ~/dev/oss/dms

Tramite l’opzione --dev il sistema scarica anche le librerie necessarie per contribuire ad un progetto

martedì 16 ottobre 12

Page 37: Composer

autoload.php

martedì 16 ottobre 12

Page 38: Composer

autoload.php

Composer genererà un file per il loading di tutte le tue librerie

martedì 16 ottobre 12

Page 39: Composer

autoload.php

Composer genererà un file per il loading di tutte le tue librerie

vendor/autoload.php

martedì 16 ottobre 12

Page 40: Composer

composer everyday

martedì 16 ottobre 12

Page 41: Composer

composer everyday

composer.json

martedì 16 ottobre 12

Page 42: Composer

composer everyday

Lista delle dipendenzecomposer.json

martedì 16 ottobre 12

Page 43: Composer

composer everyday

Lista delle dipendenzecomposer.json

composer.lock

martedì 16 ottobre 12

Page 44: Composer

composer everyday

Lista delle dipendenzecomposer.json

Dipendenze esistenticomposer.lock

martedì 16 ottobre 12

Page 45: Composer

UPDATE

martedì 16 ottobre 12

Page 46: Composer

UPDATE

★ lettura di composer.json

martedì 16 ottobre 12

Page 47: Composer

UPDATE

★ lettura di composer.json

★ download delle librerie necessarie

martedì 16 ottobre 12

Page 48: Composer

UPDATE

★ lettura di composer.json

★ download delle librerie necessarie

★ scrittura del file composer.lock

martedì 16 ottobre 12

Page 49: Composer

INSTALL

martedì 16 ottobre 12

Page 50: Composer

INSTALL

★ lettura di composer.json

martedì 16 ottobre 12

Page 51: Composer

INSTALL

★ lettura di composer.json

★ controllo del file composer.lock

martedì 16 ottobre 12

Page 52: Composer

INSTALL

★ lettura di composer.json

★ controllo del file composer.lock

★ recupero delle versioni “lockate”

martedì 16 ottobre 12

Page 53: Composer

martedì 16 ottobre 12

Page 54: Composer

composer.lock in versioning

martedì 16 ottobre 12

Page 55: Composer

composer.lock

composer.lock in versioning

martedì 16 ottobre 12

Page 56: Composer

composer.lock

composer install

composer.lock in versioning

martedì 16 ottobre 12

Page 57: Composer

composer.lock

composer install

composer.lock in versioning

Certezza di avere tutti i sistemi allineati

martedì 16 ottobre 12

Page 58: Composer

martedì 16 ottobre 12

Page 59: Composer

{ "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", "reference": "tags/Smarty_3_1_7/distribution/" } } } ]}

N!.-C!"p#$r P'*4'/$

martedì 16 ottobre 12

Page 60: Composer

{ "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", "reference": "tags/Smarty_3_1_7/distribution/" } } } ]}

“package”: on-the-fly package, injecting a composer.json

N!.-C!"p#$r P'*4'/$

martedì 16 ottobre 12

Page 61: Composer

{ "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", "reference": "tags/Smarty_3_1_7/distribution/" } } } ]}

SVN / Git

“package”: on-the-fly package, injecting a composer.json

N!.-C!"p#$r P'*4'/$

martedì 16 ottobre 12

Page 62: Composer

I .$$- (+)0 PEAR p'*4'/$...No Problem!

martedì 16 ottobre 12

Page 63: Composer

{ "repositories": [ { "type": "pear", "url": "http://pear2.php.net" } ], "require": { "pear-pear2.php.net/PEAR2_Text_Markdown": "*", "pear-pear2/PEAR2_HTTP_Request": "*" }}

martedì 16 ottobre 12

Page 64: Composer

{ "repositories": [ { "type": "pear", "url": "http://pear2.php.net" } ], "require": { "pear-pear2.php.net/PEAR2_Text_Markdown": "*", "pear-pear2/PEAR2_HTTP_Request": "*" }}

“pear”: official PEAR and custom PEAR channels

martedì 16 ottobre 12

Page 65: Composer

{ "repositories": [ { "type": "pear", "url": "http://pear2.php.net" } ], "require": { "pear-pear2.php.net/PEAR2_Text_Markdown": "*", "pear-pear2/PEAR2_HTTP_Request": "*" }}

“pear”: official PEAR and custom PEAR channels

Remember the prefix!

martedì 16 ottobre 12

Page 66: Composer

{ "repositories": [ { "type": "pear", "url": "http://pear2.php.net" } ], "require": { "pear-pear2.php.net/PEAR2_Text_Markdown": "*", "pear-pear2/PEAR2_HTTP_Request": "*" }}

“pear”: official PEAR and custom PEAR channels

Remember the prefix!

Warning: PEAR causes a overhead of requests! !

martedì 16 ottobre 12

Page 67: Composer

Script: composer eventmartedì 16 ottobre 12

Page 68: Composer

martedì 16 ottobre 12

Page 69: Composer

“oggi avrei voglia di qualcosa di buono...”

martedì 16 ottobre 12

Page 70: Composer

packagist.orgmartedì 16 ottobre 12

Page 71: Composer

martedì 16 ottobre 12

Page 72: Composer

martedì 16 ottobre 12

Page 73: Composer

martedì 16 ottobre 12

Page 74: Composer

martedì 16 ottobre 12

Page 75: Composer

$ composer.phar search filter

dms/dms-filter-bundle : DMS Filter Bundle, makes Annotation based ...lexik/form-filter-bundle : This bundle aim to provide classes to build...rollerworks/recordfilter-bundle : Record search-filtering bundle for Symfonybrikou/zend_filter : Zend Framework Filter Libraryext-filter : The filter PHP extensiondms/dms-filter : DMS Library, includes various bundles and ...shtumi/useful-bundle : Symfony ShtumiUsefulBundle

martedì 16 ottobre 12

Page 76: Composer

martedì 16 ottobre 12

Page 77: Composer

$ composer.phar show dms/dms-filter-bundle

name : dms/dms-filter-bundledescrip. : DMS Filter Bundle, makes Annotation based entity filtering availablein Symfonykeywords : symfony, bundle, filter, dmsversions : dev-master, v1.1.1, v1.1, 1.0.2, 1.0.1, 1.0.0type : symfony-bundlelicense : MITsource : [git] https://github.com/rdohms/DMSFilterBundle v1.1.1dist : [zip] https://github.com/rdohms/DMSFilterBundle/zipball/v1.1.1 v1.1.1names : dms/dms-filter-bundleautoload

psr-0

DMS\Bundle\FilterBundle => .requires

php >=5.3.2dms/dms-filter >=1.0.2

martedì 16 ottobre 12

Page 78: Composer

martedì 16 ottobre 12

Page 79: Composer

Compiti a casahttps://github.com/composer/satis

Satis - Package Repository Generator

Simple static Composer repository generator.

It uses any composer.json file as input and dumps all the required (according to their version constraints)

packages to a Composer Repository file.

martedì 16 ottobre 12