Guide galattiche per aspiranti programmatori

sviluppatori in miniatura vicini allo schermo di un pc con il logo di php
Lezione 12 / 33

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 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": "autore@example.com"
        }
    ],
    "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.

Contattaci senza impegno per informazioni sul corso

Scopriamo insieme se i nostri corsi fanno per te. Compila il form e aspetta la chiamata di uno dei nostri consulenti.

Contattaci senza impegno per informazioni sul corso

Pagamento rateale

Valore della rata: A PARTIRE DA 112 €/mese.

Esempio di finanziamento  

Importo finanziato: € 2440 in 24 rate da € 112 – TAN fisso 9,37% TAEG 12,57% – importo totale del credito € 2788,68.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/07/2023 al 31/12/2023.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

* In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.

Pagamento rateale

Valore della rata: A PARTIRE DA 183 €/mese.

Esempio di finanziamento 

Importo finanziato: € 3990 in 24 rate da € 183 – TAN fisso 9,37% TAEG 12,57% – importo totale del credito € 4496,56.

Il costo totale del credito comprende: interessi calcolati al TAN indicato, oneri fiscali (imposta di bollo sul contratto 16,00 euro*) addebitati sulla prima rata, costo mensile di gestione pratica € 3,90, spesa di istruttoria € 0,00, spesa per invio rendicontazione periodica cartacea € 0,98 (o spesa per invio rendicontazione periodica cartacea € 0,00), imposta di bollo su rendicontazione periodica € 0,00. Modalità di rimborso obbligatoria: addebito diretto su c/c. La scadenza delle rate è determinata dal giorno della liquidazione del contratto; la data di scadenza delle rate è prevista il giorno 15 del mese. L’importo di ciascuna rata comprende una quota di capitale crescente e interessi decrescente secondo un piano di ammortamento “alla francese”. Offerta valida dal 01/07/2023 al 31/12/2023.

Messaggio pubblicitario con finalità promozionale. Per le informazioni precontrattuali richiedere sul punto vendita il documento “Informazioni europee di base sul credito ai consumatori” (SECCI) e copia del testo contrattuale. Salvo approvazione di Sella Personal Credit S.p.A. Aulab S.r.l. opera quale intermediario del credito NON in esclusiva.

* In fase di richiesta del finanziamento verrà proposta la facoltà di selezionare, in alternativa all’imposta di bollo sul contratto di 16,00 euro, l’imposta sostitutiva, pari allo 0,25% dell’importo finanziato.