/** * Build a new command argument from an array. * * @param string $name * @param array $params * * @return Argument */ public static function createFromArray($name, array $params) { $argument = new Argument($name); $params = self::getSettableArgumentParams($params); foreach ($params as $key => $value) { $method = 'set' . ucwords($key); $argument->{$method}($value); } if ($argument->defaultValue()) { $argument->setValue($argument->defaultValue()); } return $argument; }
/** * Set the argument's value * * @param array $argv * @param Argument $argument * @param int $key * @param string|null $value * * @return array The new $argv */ protected function setArgumentValue($argv, $argument, $key, $value) { // Arguments are given the value true if they only need to // be defined on the command line to be set. if ($argument->noValue()) { $argument->setValue(true); return $argv; } if (is_null($value)) { // If the value wasn't previously defined in "key=value" // format then define it from the next command argument. $argument->setValue($argv[++$key]); unset($argv[$key]); return $argv; } $argument->setValue($value); return $argv; }