Articoli

Come creare un comando Artisan PHP personalizzato in Laravel

Artisan fornisce una serie di comandi utili per la produzione dei progetti laravel.

Il framework Laravel e Artisan sono predisposti per la creazione di nuovi comandi Artisan, scrivendo codice programma in linguaggio PHP.

In questo articolo andiamo a vedere come definire e scrivere un nuovo comando Artisan.

Tempo di lettura stimato: 3 minuti

Artisan di Laravel 11

Per creare un nuovo comando Artisan, usiamo il comando

php artisan make:command <command-name>

Questo comando creerà una nuova classe di comandi all’interno della directory app/Console/Commands. Nel caso in cui la directory non esista nel nostro progetto laravel, verrà creata automaticamente la prima volta che eseguiamo il comando artisan make:command.

Artisan è una command line utility di Laravel, ampiamente utilizzata per impostare migrations, routes, queue, controllers e molto altro.

Per un elenco completo delle attività che Artisan Laravel può fare, esegui il comando seguente all’interno della directory del progetto Laravel:

php artisan

    Make è un comando importante in Artisan, utilizzato per creare comandi Artisan personalizzati.

     make
      make:channel                         Create a new channel class
      make:chart                           Creates a new chart
      make:command                         Create a new Artisan command
      make:controller                      Create a new controller class
      make:event                           Create a new event class
      make:exception                       Create a new custom exception class
      make:factory                         Create a new model factory
      make:job                             Create a new job class
      make:listener                        Create a new event listener class
      make:mail                            Create a new email class
      make:middleware                      Create a new middleware class
      make:migration                       Create a new migration file
      make:model                           Create a new Eloquent model class
      make:notification                    Create a new notification class
      make:observer                        Create a new observer class
      make:policy                          Create a new policy class
      make:provider                        Create a new service provider class
      make:request                         Create a new form request class
      make:resource                        Create a new resource
      make:rule                            Create a new validation rule
      make:seeder                          Create a new seeder class
      make:test                            Create a new test class

      I comandi artisan Laravel possono essere anche schedulati nel CRON.

      Artisan Laravel le origini

      Se osserviamo il sorgente dell’applicazione Artisan nella directory Illuminate\Console, noterai che la classe stessa estende Symfony\Component\Console\Application.

      Sebbene Artisan utilizzi il componente console più conosciuto di Symfony, ha ancora alcuni metodi comuni con alias simili a Laravel. Avrai comunque la sensazione di sviluppare in modo nativo con Laravel.

      Comando personalizzato Artisan

      Usando Laravel, puoi facilmente creare command di Artisan personalizzati. Basta digitare il seguente comando nella Console Artisan del tuo progetto per creare un nuovo comando personalizzato (il nome del comando segue il make:command):

      Newsletter sull’Innovazione
      Non perderti le notizie più importanti sull'Innovazione. Iscriviti per riceverle via e-mail.
      php artisan make:command <command_name>

        Ora apri il tuo terminale ed esegui il seguente comando.

        php artisan make:command CreateEmployee

          Una volta eseguito completamente il comando sopra menzionato, otterrai un file nella directory app/console/Commands con il nome “CreateEmployee”. Ecco il codice:

          <?php
          
          namespace App\Console\Commands;
          
          use Illuminate\Console\Command;
          
          class CreateEmployee extends Command
          {
             /**
              * The name and signature of the console command.
              *
              * @var string
              */
             protected $user = 'app:CreateEmployee';
          
             /**
              * The console command description.
              *
              * @var string
              */
             protected $description = 'Command description';
          
             /**
              * Execute the console command.
              *
              * @return mixed
              */
             public function handle()
             {
                 //
             }
          }

            Ora è il momento di aggiornare il comando Laravel appena creato, andremo a scrivere il codice nel metodo handle(), eventuali parametri nella $signature e la descrizione in $description.

            Nel metodo handle definiremo $user per creare l’amministratore e $description per creare un account utente con ruolo di amministratore. Definendo questi, dobbiamo anche aggiornare il campo ruolo nella tabella utenti.

              Migration

              Creiamo prima le tabelle di migrazione e il modello con il seguente comando:

              php artisan make:model Employee -m

              In questo modo verrà creato il Modello Employee e la migration per la tabella employees. Ora controlla la cartella di migrazione e vedrai la tabella di migrazione appena creata. Puoi anche customizzare le funzioni up() e down() per tua comodità.

              Model

              Ora dovrai aggiornare il model con il seguente codice:

              protected $fillable = [
                 'name', 'email', 'password', 'role'
              ];

                Successivamente, puoi aggiornare handle() in base ai requisiti desiderati:

                $newuser = [
                           'name' => 'AYX',
                           'email' => 'WYZ@domain.com',
                           'password' => bcrypt('secret'),
                           'role' => 'Manager'
                       ];

                Letture Correlate

                Ercole Palmeri

                Newsletter sull’Innovazione
                Non perderti le notizie più importanti sull'Innovazione. Iscriviti per riceverle via e-mail.