currentMenu |
---|
definition |
Commands are defined using a string expression.
The expression must start with the command name, optionally using :
as a namespace separator, for example:
greet
demo:greet
A command can take arguments:
Description | Example |
---|---|
Required argument | greet name |
Optional argument | greet [name] |
Array argument with 0-n values | greet [name]* |
Array argument with 1-n values | greet name* |
A command can take options:
Description | Example |
---|---|
Simple flag (boolean value) | greet [--yell] |
Option with an mandatory value | greet [--iterations=] |
Option that can be used 0-n times (array value) | greet [--iterations=]* |
Option with a shortcut | greet [-y|--yell] |
Options are always optional (duh). If an option is required, then it should be an argument.
Default values for arguments and options can be defined explicitly:
$app->command('greet [firstname] [lastname] [--age=]', function () {
// ...
})->defaults([
'firstname' => 'John',
'lastname' => 'Doe',
'age' => 25,
]);
They can also be inferred from the callback parameters if it is a callable:
$app->command('greet [name] [--age=]', function ($name = 'John', $age = 25) {
// ...
});
$app->command('greet name [--yell]', function () {
// ...
})->descriptions('Greet someone', [
'name' => 'Who do you want to greet?',
'--yell' => 'If set, the task will yell in uppercase letters',
]);
Arguments and options containing hyphens (-
) are matched to camelCase variables:
$app->command('run [--dry-run]', function ($dryRun) {
// ...
});
Sometimes you write an application with a single command, or you want one command to be the default command.
Symfony provides the setDefaultCommand()
method for that, you can use it like this:
$app->command('run', /* ... */);
$app->setDefaultCommand('run');