Ademas de los comandos provistos con Artisan, puedes tambien construir tus propios comandos personalizados para trabajar con tu aplicación. Debes almacenar tus comandos personalizados en el directorio app/commands
; Sin embargo, eres libre de seleccionar tu propia ubicación de almacenamiento siempre que tus comandos puedan ser autocargados basado en las configuraciones de tu composer.json
.
Para generar un nuevo comando, debes uar el comando de Artisan command:make
, el cual generará un trozo de código del comando para ayudarte a empezar:
php artisan command:make FooCommand
Por defecto, los comandos generados serán alamacenados en el direcrorio app/commands
; No obstante, puedes especificar la ruta o espacio de nombres:
php artisan command:make FooCommand --path=app/classes --namespace=Classes
Cuando se está creando el comando, la opción --command
puede ser usada para asignar el nombre del comando en la consola:
php artisan command:make AssignUsers --command=users:assign
Ua vez tu comando es generado, debes llenar las propiedades name
y description
de la clase, la cuales serán usadas cuando se muestre tu comando en la pantalla list
.
El método fire
se llamará cuando tu comando es ejeutado. Debes poner cualquier logica del comando en este método.
Los métodos getArguments
y getOptions
están donde definas argumentos u opciones que tu comando reciba. Ambos métodos retornan un arreglo de comandos, los cuales son descritos por una lista de opciones de arreglo.
Al definir argumentos
, la definición de valores del arreglo representa lo siguiente:
array($name, $mode, $description, $defaultValue)
El argumento mode
puede ser cualquiera de los siguientes: InputArgument::REQUIRED
or InputArgument::OPTIONAL
.
Al definir opciones
, la definición de valores del arreglo representa lo siguiente:
array($name, $shortcut, $mode, $description, $defaultValue)
Para opciones, el argumento mode
puede ser: InputOption::VALUE_REQUIRED
, InputOption::VALUE_OPTIONAL
, InputOption::VALUE_IS_ARRAY
, InputOption::VALUE_NONE
.
El modo VALUE_IS_ARRAY
indica que la opción puede usarse multiples veces cuando se llame el comando:
php artisan foo --option=bar --option=baz
La opción VALUE_NONE
indica que la opción es usada simplemente como un interruptor "switch":
php artisan foo --option
Mientras tu comando se está ejecutando, obviamente necesitaras acceder a los valores para los argumentos y opciones aceptados por tu aplicación. Para hacerlo,puedes usar los métodos argument
y option
:
$value = $this->argument('name');
$arguments = $this->argument();
$value = $this->option('name');
$options = $this->option();
Para enviar una salida a la consola, puedes usar los métodos info
, comment
, question
y error
. Cada uno de estos métodos usa los colores ANSI apropiados para su propósito.
$this->info('Display this on the screen');
$this->error('Something went wrong!');
También puedes usar los métodos ask
y confirm
para solicitarle una entrada al usuario:
$name = $this->ask('What is your name?');
$password = $this->secret('What is the password?');
if ($this->confirm('Do you wish to continue? [yes|no]'))
{
//
}
También puedes especificar un valor por defecto para el método confirm
, el cual que debe ser true
or false
:
$this->confirm($question, true);
Una vez tu comando esté finalizado, necesitas registrarlo con Artisan para que esté disponible para su uso. Esto se hace tipicamente en el archivo app/start/artisan.php
. Dentro de este archivo, puedes usar el método Artisan::add
para registrar el comando:
Artisan::add(new CustomCommand);
Si tu comando está registrado en la aplicación IoC container, puedes usar el método Artisan::resolve
para que esté disponibla en Artisan:
Artisan::resolve('binding.name');
Algunas veces es posbile que desees llamar a otros comandos desde tu comando. Puedes hacerlo usando el método call
:
$this->call('command:name', array('argument' => 'foo', '--option' => 'bar'));