ConsoleKit\DefaultOptionsParser::parse PHP Метод

parse() публичный Метод

Parses the array and returns a tuple containing the arguments and the options
public parse ( array $argv ) : array
$argv array
Результат array
    public function parse(array $argv)
    {
        $args = array();
        $options = array();
        for ($i = 0, $c = count($argv); $i < $c; $i++) {
            $arg = $argv[$i];
            if ($arg === '--') {
                $args[] = implode(' ', array_slice($argv, $i + 1));
                break;
            }
            if (substr($arg, 0, 2) === '--') {
                $key = substr($arg, 2);
                $value = true;
                if (($sep = strpos($arg, '=')) !== false) {
                    $key = substr($arg, 2, $sep - 2);
                    $value = substr($arg, $sep + 1);
                }
                if (array_key_exists($key, $options)) {
                    if (!is_array($options[$key])) {
                        $options[$key] = array($options[$key]);
                    }
                    $options[$key][] = $value;
                } else {
                    $options[$key] = $value;
                }
            } else {
                if (substr($arg, 0, 1) === '-') {
                    foreach (str_split(substr($arg, 1)) as $key) {
                        $options[$key] = true;
                    }
                } else {
                    $args[] = $arg;
                }
            }
        }
        return array($args, $options);
    }

Usage Example

 public function testParse()
 {
     $parser = new DefaultOptionsParser();
     list($args, $options) = $parser->parse(array('arg1'));
     $this->assertContains('arg1', $args);
     $this->assertEmpty($options);
     list($args, $options) = $parser->parse(array('arg1', 'arg2'));
     $this->assertContains('arg1', $args);
     $this->assertContains('arg2', $args);
     $this->assertEmpty($options);
     list($args, $options) = $parser->parse(array('--foo', 'arg1'));
     $this->assertContains('arg1', $args);
     $this->assertArrayHasKey('foo', $options);
     list($args, $options) = $parser->parse(array('--foo=bar', '--foobar'));
     $this->assertCount(2, $options);
     $this->assertArrayHasKey('foo', $options);
     $this->assertEquals('bar', $options['foo']);
     $this->assertArrayHasKey('foobar', $options);
     list($args, $options) = $parser->parse(array('--foo=bar', '--foo=baz'));
     $this->assertArrayHasKey('foo', $options);
     $this->assertInternalType('array', $options['foo']);
     $this->assertContains('bar', $options['foo']);
     $this->assertContains('baz', $options['foo']);
     list($args, $options) = $parser->parse(array('-a', '-bc'));
     $this->assertCount(3, $options);
     $this->assertArrayHasKey('a', $options);
     $this->assertArrayHasKey('b', $options);
     $this->assertArrayHasKey('c', $options);
 }
All Usage Examples Of ConsoleKit\DefaultOptionsParser::parse
DefaultOptionsParser