tag for dumped PHP objects must be a local one
This commit is contained in:
parent
a729462ce1
commit
f146c8d71b
@ -105,7 +105,7 @@ class Inline
|
|||||||
return 'null';
|
return 'null';
|
||||||
case is_object($value):
|
case is_object($value):
|
||||||
if ($objectSupport) {
|
if ($objectSupport) {
|
||||||
return '!!php/object:'.serialize($value);
|
return '!php/object:'.serialize($value);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($exceptionOnInvalidType) {
|
if ($exceptionOnInvalidType) {
|
||||||
@ -476,6 +476,16 @@ class Inline
|
|||||||
return (string) substr($scalar, 5);
|
return (string) substr($scalar, 5);
|
||||||
case 0 === strpos($scalar, '! '):
|
case 0 === strpos($scalar, '! '):
|
||||||
return (int) self::parseScalar(substr($scalar, 2));
|
return (int) self::parseScalar(substr($scalar, 2));
|
||||||
|
case 0 === strpos($scalar, '!php/object:'):
|
||||||
|
if (self::$objectSupport) {
|
||||||
|
return unserialize(substr($scalar, 12));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self::$exceptionOnInvalidType) {
|
||||||
|
throw new ParseException('Object support when parsing a YAML file has been disabled.');
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
case 0 === strpos($scalar, '!!php/object:'):
|
case 0 === strpos($scalar, '!!php/object:'):
|
||||||
if (self::$objectSupport) {
|
if (self::$objectSupport) {
|
||||||
return unserialize(substr($scalar, 13));
|
return unserialize(substr($scalar, 13));
|
||||||
|
@ -180,7 +180,7 @@ EOF;
|
|||||||
{
|
{
|
||||||
$dump = $this->dumper->dump(array('foo' => new A(), 'bar' => 1), 0, 0, false, true);
|
$dump = $this->dumper->dump(array('foo' => new A(), 'bar' => 1), 0, 0, false, true);
|
||||||
|
|
||||||
$this->assertEquals('{ foo: !!php/object:O:30:"Symfony\Component\Yaml\Tests\A":1:{s:1:"a";s:3:"foo";}, bar: 1 }', $dump, '->dump() is able to dump objects');
|
$this->assertEquals('{ foo: !php/object:O:30:"Symfony\Component\Yaml\Tests\A":1:{s:1:"a";s:3:"foo";}, bar: 1 }', $dump, '->dump() is able to dump objects');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testObjectSupportDisabledButNoExceptions()
|
public function testObjectSupportDisabledButNoExceptions()
|
||||||
|
@ -426,15 +426,19 @@ foo: !!php/object:O:30:"Symfony\Component\Yaml\Tests\B":1:{s:1:"b";s:3:"foo";}
|
|||||||
bar: 1
|
bar: 1
|
||||||
EOF;
|
EOF;
|
||||||
$this->assertEquals(array('foo' => new B(), 'bar' => 1), $this->parser->parse($input, false, true), '->parse() is able to parse objects');
|
$this->assertEquals(array('foo' => new B(), 'bar' => 1), $this->parser->parse($input, false, true), '->parse() is able to parse objects');
|
||||||
}
|
|
||||||
|
|
||||||
public function testObjectSupportDisabledButNoExceptions()
|
|
||||||
{
|
|
||||||
$input = <<<EOF
|
$input = <<<EOF
|
||||||
foo: !!php/object:O:30:"Symfony\Tests\Component\Yaml\B":1:{s:1:"b";s:3:"foo";}
|
foo: !php/object:O:30:"Symfony\Component\Yaml\Tests\B":1:{s:1:"b";s:3:"foo";}
|
||||||
bar: 1
|
bar: 1
|
||||||
EOF;
|
EOF;
|
||||||
|
$this->assertEquals(array('foo' => new B(), 'bar' => 1), $this->parser->parse($input, false, true), '->parse() is able to parse objects');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider invalidDumpedObjectProvider
|
||||||
|
*/
|
||||||
|
public function testObjectSupportDisabledButNoExceptions($input)
|
||||||
|
{
|
||||||
$this->assertEquals(array('foo' => null, 'bar' => 1), $this->parser->parse($input), '->parse() does not parse objects');
|
$this->assertEquals(array('foo' => null, 'bar' => 1), $this->parser->parse($input), '->parse() does not parse objects');
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -470,11 +474,29 @@ EOF;
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @dataProvider invalidDumpedObjectProvider
|
||||||
* @expectedException \Symfony\Component\Yaml\Exception\ParseException
|
* @expectedException \Symfony\Component\Yaml\Exception\ParseException
|
||||||
*/
|
*/
|
||||||
public function testObjectsSupportDisabledWithExceptions()
|
public function testObjectsSupportDisabledWithExceptions($yaml)
|
||||||
{
|
{
|
||||||
$this->parser->parse('foo: !!php/object:O:30:"Symfony\Tests\Component\Yaml\B":1:{s:1:"b";s:3:"foo";}', true, false);
|
$this->parser->parse($yaml, true, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function invalidDumpedObjectProvider()
|
||||||
|
{
|
||||||
|
$yamlTag = <<<EOF
|
||||||
|
foo: !!php/object:O:30:"Symfony\Tests\Component\Yaml\B":1:{s:1:"b";s:3:"foo";}
|
||||||
|
bar: 1
|
||||||
|
EOF;
|
||||||
|
$localTag = <<<EOF
|
||||||
|
foo: !php/object:O:30:"Symfony\Tests\Component\Yaml\B":1:{s:1:"b";s:3:"foo";}
|
||||||
|
bar: 1
|
||||||
|
EOF;
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'yaml-tag' => array($yamlTag),
|
||||||
|
'local-tag' => array($localTag),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Reference in New Issue
Block a user