Skip to main content

Che cos’è Artisan

Artisan è lo strumento a riga di comando (CLI) incluso in Laravel. Esiste come script artisan nella radice del progetto e fornisce numerosi comandi che rendono più efficienti sviluppo e operatività. Per vedere l’elenco dei comandi disponibili usa il comando list.
Per vedere come usare un comando, aggiungi help davanti.
Se usi Laravel Sail, al posto di php artisan usa sail artisan. I comandi vengono eseguiti dentro il container Docker.

Tinker

Laravel Tinker è un ambiente REPL che ti permette di interagire da riga di comando con l’intera applicazione: modelli Eloquent, job, eventi ecc.
Una volta avviato puoi eseguire direttamente codice PHP.
Tinker modifica realmente i dati. Fai molta attenzione se lo esegui in produzione. È adatto a verifica del comportamento e debugging in ambienti locali o di staging.

Creare comandi personalizzati

Generare un comando

Con make:command generi lo scheletro di una classe comando.
Viene generato app/Console/Commands/ImportProducts.php.

Struttura di base del comando

La classe comando generata ha tre elementi principali: $signature, $description e handle().
In Laravel 13 è disponibile anche la sintassi con attributi PHP.

Definire argomenti e opzioni

In $signature definisci in un solo posto nome del comando, argomenti e opzioni.

Ottenere argomenti e opzioni

Dentro handle() recupera i valori con argument() e option().

input() — accessor tipizzati

Con il metodo input() puoi accedere ad argomenti e opzioni del comando tramite accessor tipizzati come quelli delle richieste HTTP.
Se vuoi ottenere solo un nome specifico, passalo direttamente (viene cercato sia tra gli argomenti sia tra le opzioni).
Mentre argument() e option() restituiscono stringhe, gli accessor tipizzati di input() convertono al tipo appropriato. Molto comodi quando vuoi gestire in modo type-safe date, numeri, enum ecc.

Interazione con l’utente

Stampare messaggi

Ci sono metodi dedicati per stampare messaggi colorati sulla console.

Chiedere all’utente

Puoi accettare input interattivo dall’utente.

Barra di avanzamento

Puoi mostrare in modo chiaro l’avanzamento durante l’elaborazione di grandi quantità di dati.
Per un controllo manuale più fine:

Casi d’uso pratici

Comando di importazione dati

Esempio pratico di un comando che importa dati prodotto da un file CSV.
1

Genera il comando

2

Implementa il comando

3

Esegui il comando

Comando di manutenzione periodica

Esempio di un comando di manutenzione periodica, come la cancellazione di dati vecchi.

Combinazione con lo scheduler

Il comando creato può essere schedulato in routes/console.php. Per i dettagli vedi Task scheduling.

Test dei comandi

Con le funzionalità di test di Laravel puoi verificare il comportamento dei comandi Artisan.
Esempi di asserzioni utilizzabili con il metodo artisan():

Il comando dev

Il comando Artisan dev avvia in un’unica finestra del terminale i vari processi necessari per lo sviluppo locale. Per default esegue in parallelo server di sviluppo PHP, queue worker, monitoraggio dei log con Pail e compilazione degli asset di Vite.
Internamente usa il pacchetto npm concurrently per gestire i processi. Ogni processo è etichettato e colorato, così puoi distinguerlo facilmente nell’output del terminale. Se un processo fallisce, tutti gli altri vengono fermati automaticamente. I processi eseguiti per default sono i seguenti.
Il processo vite rileva automaticamente il package manager Node in uso (npm, pnpm, Yarn, Bun) e usa il comando appropriato.

Personalizzare i processi di dev

Puoi personalizzare i processi eseguiti dal comando dev con la classe DevCommands. Di solito la registrazione avviene nel metodo boot dell’AppServiceProvider dell’applicazione. Il metodo register accetta la stringa del comando e un nome di processo opzionale.
Per registrare un comando Artisan puoi usare il metodo artisan, che antepone automaticamente php artisan.
Analogamente, il metodo node antepone il comando di esecuzione del package manager rilevato (es. npm run), mentre nodeExec antepone il comando exec (es. npx).
Registrando un processo con lo stesso nome di uno di default, lo sostituisci. Ad esempio, puoi far girare il server su una porta diversa.
Puoi personalizzare anche il colore dell’etichetta del processo. I metodi colore disponibili sono blue, purple, pink, orange, green e yellow. Puoi anche passare un colore hex personalizzato al metodo color.
Per elencare i processi dev registrati senza avviarli, usa il comando dev:list.

Filtrare i processi di dev

Con il metodo only puoi indicare di avviare solo determinati processi quando esegui dev. Analogamente, con except puoi escludere processi specifici.
Se in sviluppo locale usi anche Horizon o Reverb, registrandoli con DevCommands::artisan() puoi avviare tutto con un solo php artisan dev.

Riepilogo dei comandi più usati

Ultima modifica il 2 agosto 2026