Skip to content

Commit 2c65752

Browse files
author
Robin Chalas
committed
Fix ArrayInput::toString() for VALUE_IS_ARRAY options/args
1 parent 26ef6d2 commit 2c65752

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

src/Symfony/Component/Console/Input/ArrayInput.php

+8-2
Original file line numberDiff line numberDiff line change
@@ -101,9 +101,15 @@ public function __toString()
101101
$params = array();
102102
foreach ($this->parameters as $param => $val) {
103103
if ($param && '-' === $param[0]) {
104-
$params[] = $param.('' != $val ? '='.$this->escapeToken($val) : '');
104+
if (is_array($val)) {
105+
foreach ($val as $v) {
106+
$params[] = $param.('' != $v ? '='.$this->escapeToken($v) : '');
107+
}
108+
} else {
109+
$params[] = $param.('' != $val ? '='.$this->escapeToken($val) : '');
110+
}
105111
} else {
106-
$params[] = $this->escapeToken($val);
112+
$params[] = is_array($val) ? array_map(array($this, 'escapeToken'), $val) : $this->escapeToken($val);
107113
}
108114
}
109115

src/Symfony/Component/Console/Tests/Input/ArrayInputTest.php

+3
Original file line numberDiff line numberDiff line change
@@ -140,5 +140,8 @@ public function testToString()
140140
{
141141
$input = new ArrayInput(array('-f' => null, '-b' => 'bar', '--foo' => 'b a z', '--lala' => null, 'test' => 'Foo', 'test2' => "A\nB'C"));
142142
$this->assertEquals('-f -b=bar --foo='.escapeshellarg('b a z').' --lala Foo '.escapeshellarg("A\nB'C"), (string) $input);
143+
144+
$input = new ArrayInput(array('-b' => array('bval_1', 'bval_2'), '--f' => array('fval_1', 'fval_2')));
145+
$this->assertSame('-b=bval_1 -b=bval_2 --f=fval_1 --f=fval_2', (string) $input);
143146
}
144147
}

0 commit comments

Comments
 (0)