/** * @return array */ private function parseArguments() { $paramNameIndex = 0; $paramNames = array_keys(array_merge($this->command->getRequiredParams(), $this->command->getOptionalParams())); $useRequiredParamsForPopulation = true; $arguments = $this->arguments; $params = array(); $currentParamName = ''; while ($arguments) { $argument = array_shift($arguments); if (is_string($argument) && $argument !== '' && substr($argument, 0, 2) === '--') { $paramName = substr($argument, 2); if (in_array($paramName, $paramNames, true)) { $params[$paramName] = true; $currentParamName = $paramName; } $useRequiredParamsForPopulation = false; } else { if ($currentParamName) { $params[$currentParamName] = $argument; $currentParamName = ''; } else { if ($useRequiredParamsForPopulation && isset($paramNames[$paramNameIndex])) { $paramName = $paramNames[$paramNameIndex]; $params[$paramName] = $argument; $paramNameIndex++; $currentParamName = ''; } } } } return $params; }