Composer….addio problemi di dipendenze!

Introduzione:

Composer è un tool per la gestione delle dipendenze nei progetti PHP. Composer semplifica il lavoro dello sviluppatore rendendo facile l’utilizzo di librerie di terze parti e potendo scegliere microlibrerie, focalizzate su un unico aspetto (fare una sola cosa e farla bene), a scapito di macrolibrerie che si occupano di fare tutto. Inoltre installa automaticamente le dipendenze delle librerie che dobbiamo usare, liberandoci da questo peso, ma non solo Composer si occupa anche degli aggiornamenti che possono essere eseguiti tramite semplicissimi comandi.

Installazione:

Uno dei punti di forza di Composer è quello di essere multipiattaforma, si può installare su qualsiasi Sistema Operativo (Windows, macOS/Os e Linux). Esistono due possibilità di installazione:

  1. installazione locale riferita ad un singolo progetto;
  2. installazione globale per avere a disposizione l’eseguibile sull’intero sistema.

Installazione su Linux o macOS/Os X

  1. scaricare l’installer nella directory base di un progetto;
  2. eseguirlo tramite l’interprete PHP (php installer);
  3. cancellarlo dopo l’esecuzione perché non più utile.

Per accertarvi dell’avvenuta installazione digitate nella stessa directory il comando:

php composer.phar -V

Se l’installazione è andata a buon fine uscirà una scritta del tipo: Composer version #version

Globale:

Per eseguire l’installazione globale, a questo punto è sufficiente un ulteriore comando per spostare l’eseguibile all’interno del PATH di default del sistema:

mv composer.phar /usr/local/bin/composer

Installazione su Windows

Per i sistemi Windows l’installazione automatica è ancora più semplice:

  1. scaricate l’installer;
  2. eseguitelo da qualsiasi directory;
  3. cancellatelo.

Utilizzo di base (Command line):

L’elemento fondamentale di cui Composer ha bisogno per poter gestire le dipendenze  è un file chiamato composer.json. Per creare questo file basterà posizionarsi all’interno del progetto nello specifico nella root principale e digitare il seguente comando:

$ composer init

Successivamente vi verrà fatta qualche domanda come la descrizione del progetto, l’autore ma anche se ci sono librerie da installare alla creazione del progetto (ovviamente se ci sono bisogna inserire yes altrimenti no).

Package name (<vendor>/<name>): vendor/name
Description []: // optional
Author: AParzi <aparzi@devblog.com>
Minimum Stability []: // leave empty if not specified
License []: // leave empty if not specified
Would you like to define your dependencies (require) interactively [yes]? no
Would you like to define your dev dependencies (require-dev) interactively [yes]? no
Do you confirm generation [yes]? yes

A questo punto il file composer.json è stato creato e dovrebbe avere questa forma:

{
 "name": "root/composer-example",
 "authors": [
 {
 "name": "AParzi",
 "email": "aparzi@devblog.com"
 }
 ],
 "require": {}
}

Se, ad esempio, vogliamo installare Slim (un framework PHP per creare servizi Rest) all’interno del nostro progetto, basta digitare: composer require slim/slim "^3.0" e  il file composer.json avrà il seguente contenuto:

{
    "require": {
        "slim/slim": "^3.0"
    }
}

I package disponibili per Composer sono reperibili sul sito Packagist.org, tutte le dipendenze Composer le installa in una cartella chiamata vendor che viene creata in maniera automatica alla prima dipendenza installata.

Link utili:

About the Author

aparzi

Fondatore di questo blog e studente di Informatica presso l' Università degli Studi del Molise, contemporaneamente lavoro come Software Developer per un azienda del Molise. Nel mio tempo libero mi piace approfondire argomenti o linguaggi di programmazione a me nuovi e mi diverto a scrivere "articoli". Non mi reputo e non sono un professionista su come si scrivono articoli ma semplicemente mi piace condividere con i lettori la mia passione. Grazie della lettura :=)

1 thought on “Composer….addio problemi di dipendenze!

Leave a Reply to Giovanni Cancel reply

Your email address will not be published. Required fields are marked *