Options can be of the form:
--key=value
--key
-a
-ab (equivalent of -a -b)
When an option has no value, true will be used. If multiple key/value pairs
with the same key are specified, the "key" value will be an array containing all the values.
If "--" is detected, all folowing values will be treated as a single argument
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); }
public function parse(array $argv) { if (!isset($this->config)) { $this->parseConfigFile(); } list($args, $options) = parent::parse($argv); $type = $args[0]; if (isset($this->config[$type])) { $config = $this->config[$type]; $options = array_replace_recursive($config['options'], $options); } return array($args, $options); }