In questo articolo oggi introduciamo un altro grande progetto! chiamato Composer.

logo-composer-php

Magari avrete già sperimentato il dolore di lavorar su applicazioni PHP che usano librerie di terze parti e cercato di tenerle quanto più aggiornate possibili. Se vi è capitato, Composer può sicuramente alleviarvi il dolore.

Composer è uno strumento che mira a fornire al vostro applicativo le librerie che desiderate, nella versione che desiderate. E se queste librerie a loro volta utilizzano altre librerie, composer installa e gestisce anch’esse. La gestione delle dipendenze con Composer diventa un gioco da ragazzi.

Installare Composer

Composer è fornito in bundle dentro un archivio Phar. Assicuratevi quindi di avere nel vostro file php.ini, l’estensione Phar abilitata. (Se non è così, vi basta decommentare la riga extension=phar.so).

Potete dunque iniziare e scaricare l’ultima versione di Composer, direttamente dal sito ufficiale. I binari Windows se siete sotto il sistema microsoft.

O in alternativa, potete eseguire questo script dalla console linux del vostro server:

curl -s https://getcomposer.org/installer | php

E poi spostarlo in questa directory per renderlo accessibile dall’intero sistema:

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

Se vi da problemi di permessi, aggiungete la parolina magica “sudo” prima del comando.

Usare Composer

Se avete già esperienza con la programmazione in Ruby o Node.js, allora Composer vi risulterà familiare.
Per iniziare a utilizzare composer, il primo passo è creare un file composer.json, che elencherà tutte le dipendenze necessarie al vostro progetto, e dopo con un semplice comando sarete in grado di gestirle.

Il file composer.json ha un aspetto di questo tipo:

{ 
    "require": { 
        "illuminate/foundation": "1.0.*"
    },
    "minimum-stability": "dev"
}

la chiave require elenca le dipendenze del vostro progetto. Nell’esempio sopra la dipendenza è “Illuminate”, una libreria del Laravel framework. Chiaramente Illuminate dipende da molti altri pacchetti, che verranno in automatico installati e gestiti da composer.

A seguire, dopo il nome del pacchetto, c’è la versione richiesta. Nell’esempio sopra ogni minor-update del ramo 1.0. E’ possibile anche specificare versioni entro un certo range. Potete approfondire la questione direttamente sul sito di composer.

Per procedere all’installazione delle dipendenze, eseguite questo comando nella directory del (vostro) progetto:

php composer.phar install

oppure se invece avete optato per un’installazione senza phar, vi sarà sufficiente eseguire nella directory del progetto (dove si trova composer.json):

composer install

Composer a questo punto crea il file composer.lock e la cartella vendor in cui scarica all’interno le dipendenze. Per convenienza crea anche un autoloader chiamato autoload.php per caricare le librerie all’interno del vostro codice;
Infatti per utilizzare le librerie nel vostro codice PHP vi basterà inserire all’inizio:

<?php
require_once "vendors/autoloader.php";
// Il vostro codice...

Composer traccia le versioni delle librerie installate. E’ come un registro con tutte le librerie locali all’interno. Quando si aggiornano le librerie anche Composer le aggiorna.

Potete mantenere tutto aggiornato con il comando:

composer.phar update

Impacchettare il vostro codice

Starete pensando, come fa Composer a sapere quale e dove prendere la libreria, soltanto perchè noi nel file composer.json gli inseriamo il nome “illuminate/foundation”?
Ebbene Composer ha una repository ufficiale chiamata Packagist. Potete cercare su Packagist direttamente per sapere quale librerie sono disponibili e gestibili da Composer.
Potete addirittura creare voi stessi un package e inserirlo su Packagist per renderlo disponibili ad altri.

Creare le vostre librerie è abbastanza semplice. La documentazione ufficiale dice “l’unica differenza fra il vostro progetto e le librerie è che il vostro progetto è un pachetto senza nome”.

Infatti per poter impacchettare il vostro codice a mò di libreria, per far si che altri possano usarli vi basterà assegnare un nome al vostro progetto e una versione, modificando il file composer.json in questo modo:

{ 
    "name": "RoccoMusolino/Illumination",
    "version" : "1.0.0",
    "require": { 
        "illuminate/foundation": "1.0.*"
    },
    "minimum-stability": "dev"
}

Se avete il vostro progetto su GitHub, si raccomanda di usare il nome del proprio account nel namespace del progetto. Se state usando GitHub, Packagist può prendere i numeri di versione direttamente da la, senza necessariamente doverli definire esplicitamente, come fatto sopra.

A questo punto potete pubblicare il link VCS del progetto su Packagist. Registrando un nuovo account o loggandosi con quello di GitHub e schiacciando il pulsante per l’immissione di un nuovo pacchetto. Fornite l’URL della repository e Packagist farà tutto il resto.

Conclusione

Il progetto di oggi è molto popolare, e consigliato dallo stesso Facebook per l’immissione delle sue SDK in applicativi PHP. Composer può essere estremamente utile per gestire le dipendenze dei vostri progetti. Per qualsiasi altra informazione, sul sito ufficiale trovate documentazioni dettagliate.