Exemplo n.º 1
0
 /**
  * @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;
 }