Parameters and arguments
Commands declare their interface by implementing four parameter list methods:
getRequiredNamedParameterList()getOptionalNamedParameterList()getRequiredParameterList()getOptionalParameterList()
Named parameters map to positional values (deploy production api), while Parameter definitions map to options and flags (--tag v1.2.3, --verbose).
Defining command contracts
public function getRequiredNamedParameterList():array {
return [
new NamedParameter("environment"),
];
}
public function getOptionalNamedParameterList():array {
return [
new NamedParameter("service"),
];
}
public function getRequiredParameterList():array {
return [
new Parameter(true, "tag", "t", "Release tag to deploy"),
];
}
public function getOptionalParameterList():array {
return [
new Parameter(false, "dry-run", "d", "Preview only"),
new Parameter(false, "verbose", "v", "Show extra detail"),
];
}
Reading values in run()
$environment = (string)$arguments->get("environment");
$service = (string)$arguments->get("service", "web");
$tag = (string)$arguments->get("tag");
$dryRun = $arguments->contains("dry-run");
$verbose = $arguments->contains("verbose");
The get($key, $default) pattern allows simple defaults for optional values, while contains($key) is used for boolean flags.
When required values are missing, command execution fails with explicit exceptions (MissingRequiredParameterException, MissingRequiredParameterValueException) and usage text is printed automatically.
Next, see coloured output for consistent terminal styling.