Webmozart\Console\Adapter\ArgsInput::getParameterOption PHP Method

getParameterOption() public method

public getParameterOption ( $values, $default = false, $onlyParams = false )
    public function getParameterOption($values, $default = false, $onlyParams = false)
    {
        $tokens = $this->rawArgs->getTokens();
        foreach ((array) $values as $value) {
            for (reset($tokens); null !== key($tokens); next($tokens)) {
                $token = current($tokens);
                if ($onlyParams && $token === '--') {
                    // end of options (--) signal reached, stop now
                    return $default;
                }
                // Long/short option with value in the next argument
                if ($token === $value) {
                    $next = next($tokens);
                    return $next && $next !== '--' ? $next : null;
                }
                // Long option with =
                if (0 === strpos($token, $value . '=')) {
                    return substr($token, strlen($value) + 1);
                }
                // Short option
                if (strlen($token) > 2 && '-' === $token[0] && '-' !== $token[1] && 0 === strpos($token, $value)) {
                    return substr($token, 2);
                }
            }
        }
        return $default;
    }

Usage Example

Exemplo n.º 1
0
 public function testGetParameterOption()
 {
     $input = new ArgsInput(new StringArgs('-vvalue1  --value=value2 --space value3 --last -- --foo=bar'));
     $this->assertSame('value1', $input->getParameterOption('-v'));
     $this->assertSame('value2', $input->getParameterOption('--value'));
     $this->assertSame('value3', $input->getParameterOption('--space'));
     $this->assertNull($input->getParameterOption('--last'));
     $this->assertSame('bar', $input->getParameterOption('--foo', 'default'));
     // only check real parameters, skip those following an end of options (--) signal
     $this->assertSame('default', $input->getParameterOption('--foo', 'default', true));
 }