Ed eccoci con un’altra nostra guida, questa volta ritorniamo su Composer e “andiamo di fino”, sì a scoprirlo al millimetro in modo da non lasciare niente di scontato in perfetto stile LaraMind. 

Cos’è Composer

Composer è un progetto open source per la gestione delle dipendenze di librerie PHP e l’autoloading delle classi. E’ stato sviluppato da Nils Adermann e Jordi Boggiano nel 2012, di lì a poco l’utilizzo di Composer è diventato uno standard per tutti i progetti in PHP. Il funzionamento di Composer è basato sulla presenza di un file di configurazione, denominato composer.json. Questo file viene utilizzato per impostare le dipendenze con librerie di terze parti da utilizzare nel progetto.

Installazione di Composer

Per Windows:

Il modo più semplice di installare Composer è quello di fare il download dell’installer dal seguente indirizzo “https://getcomposer.org/Composer-Setup.exe”.

Per Linux/macOS:

Si può digitare nel terminale il seguente comando:

php -r “readfile(‘https://getcomposer.org/installer’);” | php

Queste istruzioni installano il file composer.phar nella directory corrente. Se si vuole rendere disponibile Composer a livello di sistema, si può spostare il file composer.phar nella directory usrlocal/bin nel modo seguente:

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

Funzionamento di Composer

Per l’installazione delle librerie di terze parti, Composer effettua il download dal repository packagist.org. L’installazione di un pacchetto avviene digitando il seguente comando:

composer require nome-pacchetto

Se l’installazione ha avuto successo, verranno creati il file composer.lock, composer.json e la cartella vendor. Nella cartella vendor sono presenti un file denominato autoload.php, la cartella composer e le cartelle contenenti i pacchetti.

Di particolare importanza è il file autoload.php che consente l’autocaricamento delle classi. Questo file verrà incluso nel progetto PHP per il caricamento automatico delle classi.

Un altro file di fondamentale importanza è composer.lock che serve per identificare le versioni installate di ogni libreria. Ogni volta che si esegue composer install, Composer verifica la presenza di questo file e utilizza le versioni specificate in esso. Nel caso in cui il file composer.lock non sia presente, Composer effettua l’installazione delle versioni specificate in composer.json. Quindi la presenza del file composer.lock è di fondamentale importanza per garantire la presenza delle stesse versioni quando si effettua l’installazione del progetto su diverse piattaforme.

Oltre all’installazione, Composer mette a disposizione anche un comando per l’aggiornamento delle dipendenze:

composer update

Il comando update effettua l’aggiornamento delle librerie a seconda delle versioni specificate in composer.json.

Autoloading

Nella cartella vendor è inserito il file autoload.php. E’ sufficiente includere questo file nel progetto PHP per poter utilizzare le librerie di terze parti installate da Composer. In autoload.php sono riportate le informazioni per la registrazione dell’autoloading delle classi tramite la funzione spl_autoload_register().

Inoltre, con Composer è possibile gestire anche il caricamento delle classi di progetto. Basta aggiungere nel file composer.json la seguente configurazione:

{

“autoload”: {

“psr-4”:{“App\\”:”app/”}

}

}

Con questa configurazione vengono definite le classi del progetto con il namespace App che si trovano nella cartella app.

Una volta configurato il sistema di autoload è possibile eseguire il comando “composer dump-autoload” che aggiorna il file vendor/autoload.php e quindi consente di caricare anche le classi contenute nella cartella app con namespace App.

Esempio

Creiamo la cartella per il nostro progetto (per esempio my-project). Apriamo il terminale e ci posizioniamo all’interno della cartella my-project. Installiamo la libreria fzaninotto/faker per la creazione di dati fake digitando il seguente comando:

composer require fzaninotto/faker

Per poter utilizzare la libreria possiamo creare il file index.php con il seguente codice:

<?php

require_once ‘vendor/autoload.php’;

use Faker;

$faker= Faker\Factory::create();

for($i=1;$i<=10;$i++)

{

    echo $i. Nome: $faker->name Cognome: $faker->lastName Email: $faker->email<br>”;

}

Possiamo visualizzare il risultato dell’esecuzione del file nel browser facendo partire il server interno di PHP con il seguente comando:

php -S localhost:8080

Inoltre, all’interno di my-project possiamo creare una cartella app che conterrà tutte le classi del progetto. All’interno di app definiamo una classe MyClass con namespace App

File app/MyClass.php
<?php

namespace App;

class MyClass

{

    public static function myFunction()

    {

        return ‘<hr>Metodo ‘.__FUNCTION__.‘ della classe ‘.__CLASS__;

    }

}

Inseriamo in index.php il seguente codice:

<?php

require_once ‘vendor/autoload.php’;

use App\MyClass;

echo MyClass::myFunction();

In composer.json inseriamo:

“autoload”: {

    “psr-4”: {

        “App\\”:“app/”

    }

}

Inoltre, dobbiamo aggiornare il file autoload.php eseguendo il comando

composer dump-autoload

Ora è possibile eseguire il file index.php senza la generazione di errori.

LaraMind numeri 1 Laravel in Italia: oltre la formazione

Se stai cercando un Corso Laravel BASE, un Corso Laravel Avanzato oppure soluzioni customizzate per la tua formazione… sei capitato nel posto giusto. Dai un’occhiata ai nostri Corsi Custom e alle lezioni private LaraMind, personalizza al millimetro la tua crescita professionale!

Non solo formazione, LaraMind è molto di più:

Per qualsiasi informazione scrivici a    amministrazione@laramind.com 

Alessandro Gigliarano