Gestione delle dipendenze con Composer | Aulab

GUIDE PER ASPIRANTI PROGRAMMATORI

Gestione delle dipendenze con Composer

La gestione delle dipendenze è una delle funzionalità principali di Composer, permettendo agli sviluppatori php di definire, installare e mantenere aggiornate le librerie e gli strumenti necessari per un progetto PHP. Il file composer.json Il nucleo centrale di ogni progetto orchestrato da Composer è rappresentato dal file composer.json. All’interno di questo file json sono contenute…

Lezione 12 / 33
Enza Neri
Immagine di copertina

Vuoi avviare una nuova carriera o fare un upgrade?

Trova il corso Digital & Tech più adatto a te nel nostro catalogo!

La gestione delle dipendenze è una delle funzionalità principali di Composer, permettendo agli sviluppatori php di definire, installare e mantenere aggiornate le librerie e gli strumenti necessari per un progetto PHP.

Il file composer.json

Il nucleo centrale di ogni progetto orchestrato da Composer è rappresentato dal file composer.json. All’interno di questo file json sono contenute le informazioni necessarie alla definizione delle dipendenze del progetto. Ecco una panoramica dei nodi più importanti:

  • require: elenco delle librerie da utilizzare nel progetto con le relative versioni.
  • require-dev: elenco librerie necessarie solo per la fase di sviluppo, come ad esempio gli strumenti di testing.
  • autoload: regole per l’autoloading delle classi del progetto.
  • scripts: script custom

Come installare le dipendenze con Composer

Dopo aver definito le dipendenze nel file composer.json, il passo successivo è installarle. Ecco come:

  1. Inizializzazione del progetto: per inizializzare un nuovo progetto si può usare il comando composer init che andrà a generare un nuovo file composer.json attraverso una serie di prompt interattivi.
  2. Aggiunta delle dipendenze: è possibile aggiungere nuove dipendenze al progetto con il comando composer require.
  3. Installazione: tramite il comando composer install verranno installate tutte le dipendenze definite nel file composer.json.

Come aggiornare le dipendenze con Composer

Mantenere le dipendenze aggiornate è fondamentale per la sicurezza e la stabilità del progetto. Ecco come è possibile farlo:

  • Aggiornamento singolo: per aggiornare una singola dipendenza usare il comando composer update vendor/package.
  • Aggiornamento completo: per aggiornare tutte le dipendenze alla loro ultima versione compatibile con il selettore di versione indicato usare il comando composer update.

Gestione delle versioni con Composer

Definire correttamente le versioni delle dipendenze è fondamentale per prevenire conflitti e mantenere la compatibilità. Composer supporta una varietà di vincoli di versione, tra cui:

    • Versioni specifiche: ad esempio 1.0.3.
    • Range di versioni: ad esempio >=2.1 <3.0.
    • Livello di stabilità: è possibile specificare il livello di stabilità accettato usando flag come @dev @beta ecc ad esempio 1.0.*@beta.
  • Operatore Tilde: più flessibile rispetto alla specifica di una versione fissa ma abbastanza restrittivo per evitare aggiornamenti che aggiungono cambiamenti non compatibili. 
  • ~1.0 equivale a >=1.0 <2.0: accetta qualsiasi versione che inizia con 1. (1.0, 1.1, 1.2, …, 1.9.9).
  • ~1.0.0 equivale a >=1.0.0 <1.1.0: accetta qualsiasi versione che inizia con 1.0. (1.0.0, 1.0.1, 1.0.2, …, 1.0.9).

In sostanza, lultimo numero specificato nel vincolo tilde può aumentare, mentre gli altri no.

  • Operatore Caret: ancora più flessibile dell’operatore tilde in quanto permette di accettare anche aggiornamenti minori che sono retrocompatibili con la versione attuale. Alcuni esempi:
  • ^1.0.0 equivale a >=1.0.0 <2.0.0: accetta qualsiasi versione che inizia con 1. (1.0.0, 1.1.0, 1.2.0, …, 1.9.9), ma non 2.0.0.
  • ^0.1.0 equivale a >=0.1.0 <0.2.0: accetta qualsiasi versione che inizia con 0.1. (0.1.0, 0.1.1, 0.1.2, …, 0.1.9), ma non 0.2.0.
  • ^0.0.1 equivale a >=0.0.1 <0.0.2: accetta solo patch per la versione 0.0.1.

Come si nota dagli esempi precedenti, permette di aggiornare il pacchetto a qualsiasi nuova versione che non modifica il primo numero non-zero della versione attuale.

Esempio di file composer.json

Per avere una visione più concreta di come è strutturato un file composer.json, prendiamo in considerazione il seguente esempio, che potrebbe essere utilizzato come base di in un progetto in Symfony:

{
    "name": "me/myproject",
    "type": "project",
    "license": "MIT",
    "description": "Progetto esempio Symfony",
    "authors": [
        {
            "name": "Nome Autore",
            "email": "[email protected]"
        }
    ],
    "require": {
        "php": ">=8.1",
        "doctrine/orm": "^2.11",
        "symfony/framework-bundle": "^6.3",
        "symfony/console": "^6.3",
        "symfony/yaml": "^6.3"
    },
    "require-dev": {
        "symfony/browser-kit": "^6.3",
        "symfony/phpunit-bridge": "^6.3",
        "symfony/debug-bundle": "^6.3",
    },
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "App\\Tests\\": "tests/"
        }
    },
    "config": {
        "preferred-install": {
            "*": "dist"
        },
        "sort-packages": true
    }
}

In questo esempio:

  • name: identifica univocamente il progetto.
  • type: specifica il tipo di progetto.
  • license: definisce la licenza sotto cui è distribuito il progetto.
  • description: fornisce una breve descrizione del progetto.
  • authors: elenco degli autori del progetto.
  • require: elenco delle dipendenze necessarie per il progetto.

require-dev: dipendenze necessarie solo per lo sviluppo.

Sei indeciso sul percorso? 💭

Parliamone! Scrivici su Whatsapp e risponderemo a tutte le tue domande per capire quale dei nostri corsi è il più adatto alle tue esigenze.

Oppure chiamaci al 800 128 626