Composer (software)
# Composer (software)

Composer è un gestore di pacchetti a livello applicativo per il linguaggio di programmazione PHP, che fornisce un formato standard per la gestione delle dipendenze dei progetti PHP e delle librerie richieste. È stato sviluppato da Nils Adermann e Jordi Boggiano, che continuano a gestire il progetto. Hanno iniziato lo sviluppo nell'aprile 2011 e lo hanno pubblicato il 1º marzo 2012. Composer è fortemente ispirato al npm di Node.js e al bundler di Ruby. L'algoritmo di risoluzione delle dipendenze del progetto era basato inizialmente su di un port PHP del satsolver libzypp di openSUSE.

Composer viene eseguito da riga di comando e si occupa di installare le dipendenze (ad esempio le librerie) dell'applicazione. Consente inoltre agli utenti di installare applicazioni PHP disponibili su "Packagist", il suo repository principale di pacchetti. Fornisce inoltre funzionalità di autoload per le librerie che ne prevedono il supporto, per facilitare l'utilizzo di codice di terze parti.

## Sintassi

### Comandi

Composer offre diversi parametri tra cui:

* require: aggiunge la libreria specificata nel parametro al file composer.json e la installa;
* install: installa tutte le librerie elencate dal composer.json; è il comando da utilizzare per scaricare tutte le dipendenze da repository PHP;
* update: aggiorna tutte le librerie elencate dal composer.json, in base alle versioni consentite menzionate in esso;
* remove: disinstalla una libreria e la rimuove dal composer.json.

### Definizione librerie

Esempio di composer.json generato dal seguente comando:

### Versioni

Le diverse versioni autorizzate delle librerie sono definite da:

| Simbolo | Ruolo (posto prima di un numero di versione) | Esempio |
| - | - | - |
| >= | permette di estendere il numero; è possibile usare anche: >, <, <= | "php": ">=5.5.9" include PHP 7 |
| != | esclude una versione | |
| - | definisce un intervallo di versioni | |
| ¦¦ | aggiunge possibili versioni | "symfony/symfony": "2.8 ¦¦ 3.0" raggruppa solo queste due versioni |
| * | si estende a tutte le sottoversioni | "symfony/symfony": "3.1.*" include 3.1.1 |
| ~ | si estende alle versioni successive dello stesso livello | "doctrine/orm": "~2.5" comprende anche il 2.6, ma né il 2.4, né il 3.0 |
| ^ | uguale alla tilde, solo se è prevista una retrocompatibilità | |

## Framework supportati

* Symfony versione 2 e successive
* Laravel versione 4 e successive
* CodeIgniter versione 3.0 e successive
* CakePHP versione 3.0 e successive
* FuelPHP versione 2.0 e successive
* Drupal versione 8 e successive
* TYPO3 versione 6.2 e successive
* SilverStripe versione 3.0 successive
* Magento versione 2.0 successive
* Yii versione 1.1 e successive
* Zend Framework versione 1 e successive
* Silex
* Lumen
