Returns all arguments of the format.
public getArguments ( boolean $includeBase = true ) : |
||
$includeBase | boolean | Whether to include arguments of the base format in the result. |
return | The arguments. |
/** * Returns all arguments added to the builder. * * @param bool $includeBase Whether to include arguments of the base format * in the result. * * @return Argument[] The arguments. */ public function getArguments($includeBase = true) { Assert::boolean($includeBase, 'The parameter $includeBase must be a boolean. Got: %s'); $arguments = $this->arguments; if ($includeBase && $this->baseFormat) { // prepend base arguments $arguments = array_replace($this->baseFormat->getArguments(), $arguments); } return $arguments; }
/** * Returns the values of all arguments. * * By default, this method also includes the default values of unset * arguments. You can disable this behavior by passing `false` for * `$includeDefaults`. * * @param bool $includeDefaults Whether to return the default values for * arguments that were not set. * * @return array The argument values. * * @see getArgument() */ public function getArguments($includeDefaults = true) { $arguments = array(); foreach ($this->format->getArguments() as $argument) { $name = $argument->getName(); if (array_key_exists($name, $this->arguments)) { $arguments[$name] = $this->arguments[$name]; } elseif ($includeDefaults) { $arguments[$name] = $argument->getDefaultValue(); } } return $arguments; }
/** * Creates a new adapter. * * @param ArgsFormat $format The adapted format. */ public function __construct(ArgsFormat $format) { parent::__construct(); $i = 1; foreach ($format->getCommandNames() as $commandName) { do { $argName = 'cmd' . $i++; } while ($format->hasArgument($argName)); $this->addArgument($argument = $this->adaptCommandName($commandName, $argName)); $this->commandNames[$argument->getName()] = $commandName; } foreach ($format->getCommandOptions() as $commandOption) { $this->addOption($this->adaptCommandOption($commandOption)); } foreach ($format->getOptions() as $option) { $this->addOption($this->adaptOption($option)); } foreach ($format->getArguments() as $argument) { $this->addArgument($this->adaptArgument($argument)); } }
/** * Renders the synopsis of a console command. * * @param BlockLayout $layout The layout. * @param ArgsFormat $argsFormat The console arguments to render. * @param string $appName The name of the application binary. * @param string $prefix The prefix to insert. * @param bool $lastOptional Set to `true` if the last command of the * console arguments is optional. This * command will be enclosed in brackets in * the output. */ protected function renderSynopsis(BlockLayout $layout, ArgsFormat $argsFormat, $appName, $prefix = '', $lastOptional = false) { $nameParts = array(); $argumentParts = array(); $nameParts[] = '<u>' . ($appName ?: 'console') . '</u>'; foreach ($argsFormat->getCommandNames() as $commandName) { $nameParts[] = '<u>' . $commandName->toString() . '</u>'; } foreach ($argsFormat->getCommandOptions() as $commandOption) { $nameParts[] = $commandOption->isLongNamePreferred() ? '--' . $commandOption->getLongName() : '-' . $commandOption->getShortName(); } if ($lastOptional) { $lastIndex = count($nameParts) - 1; $nameParts[$lastIndex] = '[' . $nameParts[$lastIndex] . ']'; } foreach ($argsFormat->getOptions(false) as $option) { // \xC2\xA0 is a non-breaking space if ($option->isValueRequired()) { $format = "%s <%s>"; } elseif ($option->isValueOptional()) { $format = "%s [<%s>]"; } else { $format = '%s'; } $optionName = $option->isLongNamePreferred() ? '--' . $option->getLongName() : '-' . $option->getShortName(); $argumentParts[] = sprintf('[' . $format . ']', $optionName, $option->getValueName()); } foreach ($argsFormat->getArguments() as $argument) { $argName = $argument->getName(); $argumentParts[] = sprintf($argument->isRequired() ? '<%s>' : '[<%s>]', $argName . ($argument->isMultiValued() ? '1' : '')); if ($argument->isMultiValued()) { $argumentParts[] = sprintf('... [<%sN>]', $argName); } } $argsOpts = implode(' ', $argumentParts); $name = implode(' ', $nameParts); $layout->add(new LabeledParagraph($prefix . $name, $argsOpts, 1, false)); }
/** * @expectedException \InvalidArgumentException */ public function testGetArgumentsFailsIfIncludeBaseNoBoolean() { $format = new ArgsFormat(); $format->getArguments(1234); }