# Composer

Composer és un gestor de paquets per al llenguatge de programació PHP que proporciona un format estàndard per gestionar les dependències de programari les biblioteques requerides escrits en PHP. Va ser desenvolupat per Nils Adermann i Jordi Boggiano, que continuen gestionant el projecte. Va començar a desenvolupar-se l'abril de 2011 i es va publicar per primera vegada el primer de març de 2012. Composer està molt inspirat en els gestors de dependències npm de Node.js i bundler del llenguatge de programació Ruby. L’algorisme de resolució de dependències de Composer va iniciar-se com una traducció a PHP del libzypp d'OpenSUSE, basat en un algorisme de solució de SAT.
Composer s'executa des de la línia de comandes i instal·la dependències (p. ex. biblioteques, libraries en anglès) per a una aplicació. També permet als usuaris instal·lar aplicacions de PHP estan disponibles a "Packagist", que és l'arxiu més gros de paquets. També proporciona capacitats d'autoload per a biblioteques que han especificat com s'han d'autocarregar per fer més fàcil l'ús de codi de tercers.

## Sintaxi

Composer disposa de diversos paràmetres, entre els quals:
* require: afegeix la biblioteca al paràmetre require al fitxer composer.json i l'instal·la.
* install: instal·la totes les biblioteques que hi ha al composer.json. És la comanda que s'utilitza per descarregar totes les dependències de PHP establertes en el fitxer.
* update: actualitza totes les biblioteques del composer.json, d'acord amb les versions permeses que s'indiquen en el fitxer.
* remove: desinstal·la una biblioteca i l'elimina del composer.json.

### Definició de biblioteques

Exemple de composer.json generat per la comanda següent:

### Versions

La manera d'indicar quines versions d'una biblioteca estan autoritzades és la següent:
| Símbol | Rol (ubicat abans d'un número de versió) | Exemple |
| >= | permet actualitzar a una versió posterior. A més, es pot fer servir: >, <, <=. | "php": ">=5.5.9" inclou PHP 7. |
| != | exclou una versió. | |
| - | defineix interval de versions. | |
| ¦¦ | afegir possibles versions. | "symfony/symfony": "2.8 ¦¦ 3.0" permet només aquestes dues versions. |
| * | s'estén a totes les subversions. | "symfony/symfony": "3.1.*" inclou el 3.1.1. |
| ~ | s'estén a les següents versions del mateix nivell. | "doctrine/orm": "~2.5" també es refereix al 2.6, però ni al 2.4 ni al 3.0. |
| ^ | igual que l'anterior, només si hi ha una retrocompatibilitat. | |

## Frameworks que el fan servir

* Symfony versió 2 i posteriors
* Laravel versió 4 i posteriors
* CodeIgniter versió 3.0 i posterior
* CakePHP versió 3.0 i posterior
* FuelPHP versió 2.0 i posterior
* Drupal versió 8 i posterior
* TYPO3 versió 6.2 i posteriors
* SilverStripe versió 3.0 posterior
* Magento versió 2.0 posterior
* Yii versió 1.1 i posterior
* Zend Framework versió 1 i posteriors
* Silex
* Lumen

## Referències

* ↑ Software release, github.com, Retrieved April 24, 2016.
* ↑ Getting Started/Dependency management, getcomposer.org, Retrieved November 28, 2013.
* ↑ «composer/composer», Jun 23, 2020. [Consulta: Jun 24, 2020].
* ↑ Vegeu packagist.org
* ↑ «Command-line interface / Commands». getcomposer.org.
* ↑ «Versions and constraints - Composer». getcomposer.org.