| 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:
greetdemo: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');