Artisan: La CLI di Laravel

Artisan è un'interfaccia a riga di comando inclusa in Laravel che fornisce una serie di comandi per aiutare l'utente nel flusso di sviluppo.

È possibile utilizzare Artisan eseguendo il comando "php artisan" dal terminale. Verrà visualizzato un elenco di tutti i comandi disponibili. È quindi possibile eseguire un comando specifico digitando "php artisan [comando]".

I comandi più utilizzati di Artisan sono quelli che generano i componenti del framework con un costrutto di base già impostato. Ad esempio, per creare un nuovo Controller “UserController” basterà eseguire il seguente comando:

php artisan make:controller UserController

Una volta eseguito il comando, troveremo la classe UserController all’interno della cartella App/Http/Controllers. Questa classe sarà vuota, ma se avessimo voluto aggiungere i metodi per una CRUD, sarebbe bastato aggiungere l’attributo –resource al comando precedente:

php artisan make:controller UserController --resource

È anche possibile creare con un singolo comando la maggior parte dei files che compongono un componente. Ad esempio se dovessimo gestire la CRUD di un’ipotetica entità “City”, potremmo lanciare questo comando:

php artisan make:model City -mcr

In questo modo, Laravel creerà per noi il modello, il controller con i metodi per la CRUD e il file per migrare la struttura della tabella.

Estendere Artisan

Artisan non serve solamente a creare dei files. Ad esempio lo utilizzeremo per riempire il database con dati di test, gestire cron-job e tanto altro. Possiamo anche creare comandi personalizzati che andranno ad estendere la classe Illuminate/Console/Command.

I comandi personalizzati possono essere eseguiti come qualsiasi altro comando di Artisan. È possibile eseguirli dal terminale o includerli nel codice dell’applicazione Laravel, utilizzando l’apposita Facade Artisan.

Vediamo un comando di esempio che ci stamperà sul terminale un saluto concatenando il parametro immesso dall’utente ad una stringa predefinita.

Utilizziamo Artisan per creare un nuovo comando personalizzato

php artisan make:command Hello

Il nostro nuovo comando sarà creato all’interno della cartella app/Console/Commands e ovviamente il file si chiamerà Hello.php

Apriamo con il nostro Code Editor e vediamo come si presenta questa classe

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;

class Hello extends Command {
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'command:name';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Command description';

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle() {
        return 0;
    }
}

La prima implementazione da eseguire è modificare la proprietà signature, impostando il nome del comando e gli eventuali parametri.

protected $signature = 'greet' . '{name : Il nome dell\'utente da salutare}';

Se avessi voluto rendere il parametro opzionale, mi sarebbe bastato aggiungere un punto interrogativo, in questo modo

protected $signature = 'greet' . '{name? : Il nome dell\'utente da salutare}';

Adesso implementiamo il metodo handle(), recuperando l’input immesso dall’utente e restituiamo l’output sulla console

public function handle()
{
    $this->info('Ciao ' . $this->argument('name'));
    return 0;
}

Ora non ci resta che lanciare dalla CLI il comando e osservare il risultato

php artisan greet Luca