public function setArguments(array $arguments)
{
switch ($this->argumentsType) {
case self::ARGUMENTS_TYPE_EMPTY:
if (!empty($arguments)) {
throw new InvalidCommandArgumentException($this, $arguments);
}
$arguments = [];
break;
case self::ARGUMENTS_TYPE_STRING:
$this->checkStringArgument($arguments);
$arguments = [$arguments[0]];
break;
case self::ARGUMENTS_TYPE_STRING_INT:
$this->checkStringArgument($arguments, 2);
if (!is_int($arguments[1])) {
throw new InvalidCommandArgumentException($this, $arguments);
}
$arguments = [$arguments[0], (int) $arguments[1]];
break;
case self::ARGUMENTS_TYPE_STRINGS:
$this->checkStringArguments($arguments);
break;
// A fallback in case a non-existing argument type is defined.
// This could be prevented by using an Enum as the argument type
// A fallback in case a non-existing argument type is defined.
// This could be prevented by using an Enum as the argument type
default:
throw new InvalidCommandArgumentException($this, $arguments);
}
$this->arguments = $arguments;
}