Inyección de dependencia de comandos en Laravel: una vistazo más cercano a los comandos basados en clousures
- Publicado el 10 diciembre, 2024
- Palabras: 109
¿Necesitas inyectar dependencias en tus clousures de comandos Artisan? ¡Laravel lo hace sencillo! Exploremos cómo aprovechar la inyección de dependencias en tus clousures de comandos artisan.

#Uso básico
Los comandos basados en closures ofrecen una alternativa a la definición de comandos de consola como clases. De la misma manera que los clousures de ruta son una alternativa a los controladores, piense en los closures de comandos como una alternativa a las clases de comandos.
A continuación se explica cómo puedes inyectar dependencias junto con los argumentos de tu comando:
use AppModelsUser;
use AppSupportDripEmailer;
Artisan::command('mail:send {user}', function (DripEmailer $drip, string $user) {
$drip->send(User::find($user));
});
#Ejemplo práctico
A continuación se muestra cómo podría crear un comando de notificación del sistema:
use AppServicesNotificationService;
use AppModelsUser;
use AppEnumsPriority;
Artisan::command('notify:users {type} {--priority=normal}', function (
NotificationService $notifier,
string $type,
) {
$priority = Priority::from($this->option('priority'));
$users = User::whereNotNull('email')->get();
foreach ($users as $user) {
$notifier->send(
user: $user,
type: $type,
priority: $priority
);
$this->info("Notification sent to {$user->email}");
}
});
Este enfoque te permite combinar la simplicidad de los comandos basados en clousures con el poder del sistema de inyección de dependencias de Laravel, haciendo que sus comandos sean concisos y fáciles de mantener.
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