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.

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.
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