En esta página:
Demo Github
Bien es cierto que muchas veces cuando trabajamos con Laravel necesitamos agilizar el desarrollo de nuestro proyecto, poder personalizar muchos comandos para solo ejecutarlo escribiendo en la consola nos da una gran ventaja contra el tiempo permitiéndonos hacernos mas productivos. En este tutorial aprenderemos a personalizar un comando hasta su ejecución del mismo.
Abrimos nuestra consola y ejecutamos:
1 2 3 |
php artisan make:command ComandoPersonalizado |
Vamos a la carpeta app>Console>Commands y encontraremos el archivo ComandoPersonalizado.php en donde esta la estructura que contendrá nuestro comando y debemos de personalizar.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
<?php namespace App\Console\Commands; use Illuminate\Console\Command; class ComandoPersonalizado extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'usuarios:listar'; /** * The console command description. * * @var string */ protected $description = 'Genera una tabla con los usuarios registrados en el sistema.'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return mixed */ public function handle() { // } } |
Ahora debemos registrar el comando en el archivo Kernel.php que se encuentra en app/Console/Kernel.php , vamos a la siguiente línea en el archivo:
1 2 3 4 5 6 7 8 9 10 |
/** * The Artisan commands provided by your application. * * @var array */ protected $commands = [ // ]; |
Registramos el nombre de nuestro comando creado y quedaría así:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?php namespace App\Console; use Illuminate\Console\Scheduling\Schedule; use Illuminate\Foundation\Console\Kernel as ConsoleKernel; class Kernel extends ConsoleKernel { /** * The Artisan commands provided by your application. * * @var array */ protected $commands = [ Commands\ComandoPersonalizado::class ]; /** * Define the application's command schedule. * * @param \Illuminate\Console\Scheduling\Schedule $schedule * @return void */ protected function schedule(Schedule $schedule) { // $schedule->command('inspire') // ->hourly(); } /** * Register the Closure based commands for the application. * * @return void */ protected function commands() { require base_path('routes/console.php'); } } |
Aplicando la funcionalidad
Bien vamos a nuestro archivo creado ComandoPersonalizado.php y trabajaremos con la función pública handle() en donde daremos funcionalidad a nuestro comando creado.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/** * Execute the console command. * * @return mixed */ public function handle() { $cabecera = ['Nombres y Apellidos', 'Email', 'Fecha y Hora creado']; $usuarios = User::all(['name', 'email', 'created_at'])->toArray(); $this->table($cabecera, $usuarios); $this->info('Listado Correctamente !'); } |
Voy a explicar lo que hace nuestro comando, bien crea una tabla con una cabecera de títulos, luego lista los usuarios registrados en la base de datos del sistema, esta lista contendrá los nombres y apellidos, email y la fecha de creación del usuario, por último nos envía una mensaje que la tabla ha sido listada correctamente.
Existen otras opciones avanzadas que le podemos aplicar a nuestro comando como queues, versiones, opciones, preguntas, cuestionarios, etc. date un salto por la documentación oficial y aprenderás a fondo todo sobre el tema.
Síguenos en nuestras redes sociales y Suscríbete al canal de Youtube para Developers, nos vemos hasta un próximo artículo.