Commands
The app/Commands
folder should contain your application's Artisan commands. By default,
it provides app/Commands/InspiringCommand.php
as an example command:
namespace App\Commands;
use Illuminate\Console\Scheduling\Schedule;
use LaravelZero\Framework\Commands\Command;
class InspiringCommand extends Command
{
/**
* The signature of the command.
*
* @var string
*/
protected $signature = 'inspiring {name=Artisan}';
/**
* The description of the command.
*
* @var string
*/
protected $description = 'Display an inspiring quote';
/**
* Execute the console command.
*/
public function handle(): void
{
$this->info('Simplicity is the ultimate sophistication.');
}
/**
* Define the command's schedule.
*/
public function schedule(Schedule $schedule): void
{
// $schedule->command(static::class)->everyMinute();
}
}
Of course, you can always create a new command using the make:command
Artisan command:
php <your-app-name> make:command <NewCommand>
The signature
property should contain the definition of the input expectations. This is the place
to define how to gather input from the user through arguments or options:
protected $signature = 'user:create
{name : The name of the user (required)}
{--age= : The age of the user (optional)}'
For more information, check out the Defining Input Expectations on the Laravel Documentation.
The description
property should contain one line description of your command's job. Later, this description is used on the application list of commands.
The handle
method is the place where the logic of your command should be. This method will be called when your command is executed. Note that we are able to inject any dependencies we need into the handle
method:
public function handle(Service $service): void
{
$service->execute('foo');
$this->info('Operation executed');
}
The Command I/O topic in the Laravel Documentation, can help
you to understand how to capture those input expectations and interact with the user using commands
like line
, info
, comment
, question
and error
methods.
The schedule
method allows to define the command's schedule. Please head over to the
topic Task Scheduling to find more information about this method.