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