const REGEX_QUOTED_STRING = '(?:"([^"\\\\]*(?:\\\\.[^"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\')';
/**
- * Constructor.
- *
- * @param string $input An array of parameters from the CLI (in the argv format)
- * @param InputDefinition $definition A InputDefinition instance
- *
- * @deprecated The second argument is deprecated as it does not work (will be removed in 3.0), use 'bind' method instead
+ * @param string $input A string representing the parameters from the CLI
*/
- public function __construct($input, InputDefinition $definition = null)
+ public function __construct($input)
{
- if ($definition) {
- @trigger_error('The $definition argument of the '.__METHOD__.' method is deprecated and will be removed in 3.0. Set this parameter with the bind() method instead.', E_USER_DEPRECATED);
- }
-
- parent::__construct(array(), null);
+ parent::__construct(array());
$this->setTokens($this->tokenize($input));
-
- if (null !== $definition) {
- $this->bind($definition);
- }
}
/**
private function tokenize($input)
{
$tokens = array();
- $length = strlen($input);
+ $length = \strlen($input);
$cursor = 0;
while ($cursor < $length) {
if (preg_match('/\s+/A', $input, $match, null, $cursor)) {
} elseif (preg_match('/([^="\'\s]+?)(=?)('.self::REGEX_QUOTED_STRING.'+)/A', $input, $match, null, $cursor)) {
- $tokens[] = $match[1].$match[2].stripcslashes(str_replace(array('"\'', '\'"', '\'\'', '""'), '', substr($match[3], 1, strlen($match[3]) - 2)));
+ $tokens[] = $match[1].$match[2].stripcslashes(str_replace(array('"\'', '\'"', '\'\'', '""'), '', substr($match[3], 1, \strlen($match[3]) - 2)));
} elseif (preg_match('/'.self::REGEX_QUOTED_STRING.'/A', $input, $match, null, $cursor)) {
- $tokens[] = stripcslashes(substr($match[0], 1, strlen($match[0]) - 2));
+ $tokens[] = stripcslashes(substr($match[0], 1, \strlen($match[0]) - 2));
} elseif (preg_match('/'.self::REGEX_STRING.'/A', $input, $match, null, $cursor)) {
$tokens[] = stripcslashes($match[1]);
} else {
throw new InvalidArgumentException(sprintf('Unable to parse input near "... %s ..."', substr($input, $cursor, 10)));
}
- $cursor += strlen($match[0]);
+ $cursor += \strlen($match[0]);
}
return $tokens;