Gli utenti Windows possono seguire le istruzioni per [installarlo su Windows](https://getcomposer.org/doc/00-intro.md#installation-windows).
## Assicuriamoci che il tutto abbia funzionato correttamente
```sh
# Controlla la versione e la lista delle opzioni disponibili
composer
# Ottieni ulteriori informazioni riguardanti le opzioni
composer help require
# Controlla se Composer ha tutto il necessario per funzionare come si deve
# e se è aggiornato correttamente all'ultima versione disponibile.
composer diagnose
composer diag # alias
# Aggiorna Composer all'ultima versione disponibile
composer self-update
composer self # alias
```
# Cominciamo ad usare Composer
Composer memorizza le dipendenze necessarie nel file `composer.json`.
Puoi editare questo file manualmente, ma è meglio che lasci che Composer se ne
occupi per te.
```sh
# Crea un nuovo progetto nella cartella attuale
composer init
# ti verranno chieste delle domande interrative riguardanti il tuo progetto.
# Puoi evitare di rispondere almeno che tu non stia sviluppando altri progetti
# che che possano dipendere da questo.
# Se il file composer.json esiste già, scarichera' le dipendenze necessarie
composer install
# Scarica le dipendenze necessarie per l'ambiente di produzione
composer install --no-dev
# Aggiunge una dipendenza per l'ambiente di produzione
composer require guzzlehttp/guzzle
# automaticamente selezionera' l'ultima versione, la scarichera' e la aggiungera'
# come dipendenza nell'apposito campo del file composer.json.
composer require guzzlehttp/guzzle:6.0.*
# scarichera' l'ultima versione disponibile corrispondente al pattern (es. 6.0.2)
# e lo aggiungera' come dipendenza nell'apposito campo del file composer.json.
composer require --dev phpunit/phpunit:~4.5.0
# aggiungera' la dipendenza nell'ambiente di sviluppo utilizzando l'ultima versione
# disponibile nel range >=4.5.0 e < 4.6.0.
composer require-dev phpunit/phpunit:^4.5.0
# aggiungera' la dipendenza nell'ambiente di sviluppo utilizzando l'ultima versione
# disponibile nel range >=4.5.0 and < 5.0.
# Per ulteriori dettagli riguardo le versioni, vedi [la documentazione di Composer sulle versioni](https://getcomposer.org/doc/articles/versions.md) per ulteriori dettagli
# Per vedere quali pacchetti sono installabili e quali sono gia' stati installati
composer show
# Per vedere solo quali pacchetti sono gia' stati installati
composer show --installed
# Per trovare una dipendenza con 'mailgun' nel suo nome o nella descrizione.
composer search mailgun
```
[Packagist.org](https://packagist.org/) è il repository principale per i pacchetti
di Composer. Cerca qui pacchetti di terze-parti utili per il tuo progetto.
## `composer.json` vs `composer.lock`
Il file `composer.json` memorizza la versione che si preferisce per ogni dipendenza,
insieme ad altre informazioni.
Il file `composer.lock` memorizza quale versione è stata scaricata per ogni
dipendenza. Non editare mai questo file.
Se includi il file `composer.lock` nella tua repository git, ogni sviluppatore
andra' a installare la versione attualmente utilizzata dal tuo progetto per
ogni dipendenza. Anche quando una nuova versione è stata rilasciata, Composer
andra' a installare la versione registrata nel file lock.
```sh
# Se vuoi aggiornare tutte le dipendenze all'ultima versione che corrisponde al pattern descritto
composer update
# Se vuoi scaricare l'ultima versione di una particolare dipendenza:
composer update phpunit/phpunit
# Se vuoi cambiare la versione di una una dipendenza, potresti dover rimuovere
# quello attualmente selezionato, per poi richiedere quello corretto successivamente,
# attraverso i seguenti comandi:
composer remove --dev phpunit/phpunit
composer require --dev phpunit/phpunit:^5.0
```
## Autoloader
Composer crea una classe autoloader che puoi richiamare nella tua applicazione.
Puoi creare instanze delle classi tramite il loro namespace.
```php
require __DIR__ . '/vendor/autoload.php';
$mailgun = new Mailgun\Mailgun("key");
```
### PSR-4 Autoloader
Puoi aggiungere i tuoi namespace all'autoloader.
Nel file `composer.json`, aggiungi il campo "autoload":