$value) { $this->{$key} = $value; } } else { $this->name = $name; $this->help = $help; $this->required = $required; $this->choices = $choices; } } /** * Get the name of the argument * * @return string */ public function name() { return $this->name; } /** * Generate the help for this this argument. * * @param int $width The width to make the name of the option. * @return string */ public function help($width = 0) { $name = $this->name; if (strlen($name) < $width) { $name = str_pad($name, $width, ' '); } $optional = ''; if (!$this->isRequired()) { $optional = ' (optional)'; } return sprintf('%s%s%s', $name, $this->help, $optional); } /** * Get the usage value for this argument * * @return string */ public function usage() { $name = $this->name; if (!$this->isRequired()) { $name = '[' . $name . ']'; } return $name; } /** * Check if this argument is a required argument * * @return boolean */ public function isRequired() { return (bool) $this->required; } }