Cómo dominar la propiedad signature en los comandos en Laravel

  • Publicado el 11 diciembre, 2024
  • Palabras: 128

¿Necesita crear comandos de consola fáciles de usar? ¡La propiedad signature de Laravel facilita la definición de argumentos y opciones! Exploremos esta poderosa propiedad.

Cómo dominar la propiedad signature en los comandos en Laravel

Al escribir comandos de consola, es común obtener información del usuario a través de argumentos u opciones. Laravel hace que sea muy conveniente definir la información que espera del usuario mediante la propiedad signature en sus comandos. La propiedad signature te permite definir el nombre, los argumentos y las opciones para el comando en una sintaxis única, expresiva y similar a una ruta.

 

#Argumentos básicos

La forma más simple utiliza argumentos obligatorios:

 

protected $signature = 'mail:send {user}';

 

Puedes hacer que los argumentos sean opcionales o establecer valores predeterminados:

 

// Opcional
protected $signature = 'mail:send {user?}';

// Con un valor por defecto
protected $signature = 'mail:send {user=john}';

 

#Trabajando con opciones

Las opciones proporcionan una flexibilidad adicional:

 

// Opción booleana
protected $signature = 'mail:send {user} {--queue}';

// Opción con un valor
protected $signature = 'mail:send {user} {--queue=}';

// Opción con un valor por defecto
protected $signature = 'mail:send {user} {--queue=default}';

 

#Ejemplo práctico

A continuación se muestra cómo puede crear un comando de publicación de artículos:

 

class PublishArticle extends Command
{
    protected $signature = 'blog:publish 
        {article : The ID of the article to publish}
        {--schedule= : Schedule publication for a future date}
        {--notify : Send notification to subscribers}
        {--channel=website : Publishing channel (website/social)}';

    public function handle()
    {
        $articleId = $this->argument('article');
        $schedule = $this->option('schedule');
        $shouldNotify = $this->option('notify');
        $channel = $this->option('channel');

        $this->info("Publishing article #{$articleId}");
        
        if ($schedule) {
            $this->info("Scheduled for: {$schedule}");
        }

        // Publishing logic here...

        if ($shouldNotify) {
            $this->info('Sending notifications...');
        }

        $this->info("Published to {$channel}!");
    }
}

 

Ejemplos de uso:

 

# Publicación básico
php artisan blog:publish 123

# Programar una publicación con notificación
php artisan blog:publish 123 --schedule="2024-01-01 10:00" --notify

# Publicar a una red social
php artisan blog:publish 123 --channel=social

 

Los signatures de los comandos te facilitan la creación de comandos de consola intuitivos y flexibles que son un placer de usar.

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión