minor #22913 [Yaml] Deprecate tags using colon (GuilhemN)
This PR was squashed before being merged into the 3.4 branch (closes #22913).
Discussion
----------
[Yaml] Deprecate tags using colon
| Q | A
| ------------- | ---
| Branch? | 3.4
| Bug fix? | no
| New feature? | no <!-- don't forget updating src/**/CHANGELOG.md files -->
| BC breaks? | no
| Deprecations? | yes
| Tests pass? | yes
| Fixed tickets |
| License | MIT
| Doc PR |
Using a colon in a tag doesn't look like yaml and causes trouble (see https://github.com/symfony/symfony/pull/22878), so I propose to just deprecate these tags in favor of more consistent tags.
```yml
- !php/const:PHP_INT_MAX
- !php/object:O:30:"Symfony\Component\Yaml\Tests\A":1:{s:1:"a";s:3:"foo";}
```
would become
```yml
- !php/const PHP_INT_MAX
- !php/object O:30:"Symfony\Component\Yaml\Tests\A":1:{s:1:"a";s:3:"foo";}
```
Commits
-------
9815af3
[Yaml] Deprecate tags using colon
This commit is contained in:
commit
baa1e7f677
@ -158,6 +158,24 @@ Validator
|
|||||||
Yaml
|
Yaml
|
||||||
----
|
----
|
||||||
|
|
||||||
|
* using the `!php/object:` tag is deprecated and won't be supported in 4.0. Use
|
||||||
|
the `!php/object` tag (without the colon) instead.
|
||||||
|
|
||||||
|
* using the `!php/const:` tag is deprecated and won't be supported in 4.0. Use
|
||||||
|
the `!php/const` tag (without the colon) instead.
|
||||||
|
|
||||||
|
Before:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
!php/const:PHP_INT_MAX
|
||||||
|
```
|
||||||
|
|
||||||
|
After:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
!php/const PHP_INT_MAX
|
||||||
|
```
|
||||||
|
|
||||||
* Support for the `!str` tag is deprecated, use the `!!str` tag instead.
|
* Support for the `!str` tag is deprecated, use the `!!str` tag instead.
|
||||||
|
|
||||||
* Using the non-specific tag `!` is deprecated and will have a different
|
* Using the non-specific tag `!` is deprecated and will have a different
|
||||||
|
@ -843,3 +843,21 @@ Yaml
|
|||||||
|
|
||||||
* The behavior of the non-specific tag `!` is changed and now forces
|
* The behavior of the non-specific tag `!` is changed and now forces
|
||||||
non-evaluating your values.
|
non-evaluating your values.
|
||||||
|
|
||||||
|
* The `!php/object:` tag was removed in favor of the `!php/object` tag (without
|
||||||
|
the colon).
|
||||||
|
|
||||||
|
* The `!php/const:` tag was removed in favor of the `!php/const` tag (without
|
||||||
|
the colon).
|
||||||
|
|
||||||
|
Before:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
!php/const:PHP_INT_MAX
|
||||||
|
```
|
||||||
|
|
||||||
|
After:
|
||||||
|
|
||||||
|
```yml
|
||||||
|
!php/const PHP_INT_MAX
|
||||||
|
```
|
||||||
|
@ -5,7 +5,7 @@ parameters:
|
|||||||
- false
|
- false
|
||||||
- 0
|
- 0
|
||||||
- 1000.3
|
- 1000.3
|
||||||
- !php/const:PHP_INT_MAX
|
- !php/const PHP_INT_MAX
|
||||||
bar: foo
|
bar: foo
|
||||||
escape: '@@escapeme'
|
escape: '@@escapeme'
|
||||||
foo_bar: '@foo_bar'
|
foo_bar: '@foo_bar'
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
"psr/container": "^1.0"
|
"psr/container": "^1.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"symfony/yaml": "~3.3|~4.0",
|
"symfony/yaml": "~3.4|~4.0",
|
||||||
"symfony/config": "~3.3|~4.0",
|
"symfony/config": "~3.3|~4.0",
|
||||||
"symfony/expression-language": "~2.8|~3.0|~4.0"
|
"symfony/expression-language": "~2.8|~3.0|~4.0"
|
||||||
},
|
},
|
||||||
@ -35,7 +35,7 @@
|
|||||||
"symfony/config": "<3.3.1",
|
"symfony/config": "<3.3.1",
|
||||||
"symfony/finder": "<3.3",
|
"symfony/finder": "<3.3",
|
||||||
"symfony/proxy-manager-bridge": "<3.4",
|
"symfony/proxy-manager-bridge": "<3.4",
|
||||||
"symfony/yaml": "<3.3"
|
"symfony/yaml": "<3.4"
|
||||||
},
|
},
|
||||||
"provide": {
|
"provide": {
|
||||||
"psr/container-implementation": "1.0"
|
"psr/container-implementation": "1.0"
|
||||||
|
@ -61,9 +61,9 @@ class YamlEncoderTest extends TestCase
|
|||||||
$obj = new \stdClass();
|
$obj = new \stdClass();
|
||||||
$obj->bar = 2;
|
$obj->bar = 2;
|
||||||
|
|
||||||
$this->assertEquals(" foo: !php/object:O:8:\"stdClass\":1:{s:3:\"bar\";i:2;}\n", $encoder->encode(array('foo' => $obj), 'yaml'));
|
$this->assertEquals(" foo: !php/object 'O:8:\"stdClass\":1:{s:3:\"bar\";i:2;}'\n", $encoder->encode(array('foo' => $obj), 'yaml'));
|
||||||
$this->assertEquals(' { foo: null }', $encoder->encode(array('foo' => $obj), 'yaml', array('yaml_inline' => 0, 'yaml_indent' => 2, 'yaml_flags' => 0)));
|
$this->assertEquals(' { foo: null }', $encoder->encode(array('foo' => $obj), 'yaml', array('yaml_inline' => 0, 'yaml_indent' => 2, 'yaml_flags' => 0)));
|
||||||
$this->assertEquals(array('foo' => $obj), $encoder->decode('foo: !php/object:O:8:"stdClass":1:{s:3:"bar";i:2;}', 'yaml'));
|
$this->assertEquals(array('foo' => $obj), $encoder->decode("foo: !php/object 'O:8:\"stdClass\":1:{s:3:\"bar\";i:2;}'", 'yaml'));
|
||||||
$this->assertEquals(array('foo' => null), $encoder->decode('foo: !php/object:O:8:"stdClass":1:{s:3:"bar";i:2;}', 'yaml', array('yaml_flags' => 0)));
|
$this->assertEquals(array('foo' => null), $encoder->decode("foo: !php/object 'O:8:\"stdClass\":1:{s:3:\"bar\";i:2;}'", 'yaml', array('yaml_flags' => 0)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
"php": "^5.5.9|>=7.0.8"
|
"php": "^5.5.9|>=7.0.8"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"symfony/yaml": "~3.3|~4.0",
|
"symfony/yaml": "~3.4|~4.0",
|
||||||
"symfony/config": "~2.8|~3.0|~4.0",
|
"symfony/config": "~2.8|~3.0|~4.0",
|
||||||
"symfony/property-access": "~2.8|~3.0|~4.0",
|
"symfony/property-access": "~2.8|~3.0|~4.0",
|
||||||
"symfony/http-foundation": "~2.8|~3.0|~4.0",
|
"symfony/http-foundation": "~2.8|~3.0|~4.0",
|
||||||
@ -34,7 +34,7 @@
|
|||||||
"symfony/dependency-injection": "<3.2",
|
"symfony/dependency-injection": "<3.2",
|
||||||
"symfony/property-access": ">=3.0,<3.0.4|>=2.8,<2.8.4",
|
"symfony/property-access": ">=3.0,<3.0.4|>=2.8,<2.8.4",
|
||||||
"symfony/property-info": "<3.1",
|
"symfony/property-info": "<3.1",
|
||||||
"symfony/yaml": "<3.3"
|
"symfony/yaml": "<3.4"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"psr/cache-implementation": "For using the metadata cache.",
|
"psr/cache-implementation": "For using the metadata cache.",
|
||||||
|
@ -5,4 +5,4 @@ Symfony\Component\Validator\Tests\Fixtures\Entity:
|
|||||||
properties:
|
properties:
|
||||||
firstName:
|
firstName:
|
||||||
- Range:
|
- Range:
|
||||||
max: !php/const:PHP_INT_MAX
|
max: !php/const PHP_INT_MAX
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
"symfony/http-kernel": "^3.3.5|~4.0",
|
"symfony/http-kernel": "^3.3.5|~4.0",
|
||||||
"symfony/var-dumper": "~3.3|~4.0",
|
"symfony/var-dumper": "~3.3|~4.0",
|
||||||
"symfony/intl": "^2.8.18|^3.2.5|~4.0",
|
"symfony/intl": "^2.8.18|^3.2.5|~4.0",
|
||||||
"symfony/yaml": "~3.3|~4.0",
|
"symfony/yaml": "~3.4|~4.0",
|
||||||
"symfony/config": "~2.8|~3.0|~4.0",
|
"symfony/config": "~2.8|~3.0|~4.0",
|
||||||
"symfony/dependency-injection": "~3.3|~4.0",
|
"symfony/dependency-injection": "~3.3|~4.0",
|
||||||
"symfony/expression-language": "~2.8|~3.0|~4.0",
|
"symfony/expression-language": "~2.8|~3.0|~4.0",
|
||||||
@ -39,7 +39,7 @@
|
|||||||
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
|
"phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0",
|
||||||
"symfony/dependency-injection": "<3.3",
|
"symfony/dependency-injection": "<3.3",
|
||||||
"symfony/http-kernel": "<3.3.5",
|
"symfony/http-kernel": "<3.3.5",
|
||||||
"symfony/yaml": "<3.3"
|
"symfony/yaml": "<3.4"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"psr/cache-implementation": "For using the metadata cache.",
|
"psr/cache-implementation": "For using the metadata cache.",
|
||||||
|
@ -4,6 +4,12 @@ CHANGELOG
|
|||||||
3.4.0
|
3.4.0
|
||||||
-----
|
-----
|
||||||
|
|
||||||
|
* Deprecated the `!php/object:` tag which will be replaced by the
|
||||||
|
`!php/object` tag (without the colon) in 4.0.
|
||||||
|
|
||||||
|
* Deprecated the `!php/const:` tag which will be replaced by the
|
||||||
|
`!php/const` tag (without the colon) in 4.0.
|
||||||
|
|
||||||
* Support for the `!str` tag is deprecated, use the `!!str` tag instead.
|
* Support for the `!str` tag is deprecated, use the `!!str` tag instead.
|
||||||
|
|
||||||
* Deprecated using the non-specific tag `!` as its behavior will change in 4.0.
|
* Deprecated using the non-specific tag `!` as its behavior will change in 4.0.
|
||||||
|
@ -170,7 +170,7 @@ class Inline
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (Yaml::DUMP_OBJECT & $flags) {
|
if (Yaml::DUMP_OBJECT & $flags) {
|
||||||
return '!php/object:'.serialize($value);
|
return '!php/object '.self::dump(serialize($value));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Yaml::DUMP_OBJECT_AS_MAP & $flags && ($value instanceof \stdClass || $value instanceof \ArrayObject)) {
|
if (Yaml::DUMP_OBJECT_AS_MAP & $flags && ($value instanceof \stdClass || $value instanceof \ArrayObject)) {
|
||||||
@ -620,6 +620,8 @@ class Inline
|
|||||||
return (int) self::parseScalar(substr($scalar, 2), $flags);
|
return (int) self::parseScalar(substr($scalar, 2), $flags);
|
||||||
case 0 === strpos($scalar, '!php/object:'):
|
case 0 === strpos($scalar, '!php/object:'):
|
||||||
if (self::$objectSupport) {
|
if (self::$objectSupport) {
|
||||||
|
@trigger_error('The !php/object: tag to indicate dumped PHP objects is deprecated since version 3.4 and will be removed in 4.0. Use the !php/object (without the colon) tag instead.', E_USER_DEPRECATED);
|
||||||
|
|
||||||
return unserialize(substr($scalar, 12));
|
return unserialize(substr($scalar, 12));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -630,7 +632,7 @@ class Inline
|
|||||||
return;
|
return;
|
||||||
case 0 === strpos($scalar, '!!php/object:'):
|
case 0 === strpos($scalar, '!!php/object:'):
|
||||||
if (self::$objectSupport) {
|
if (self::$objectSupport) {
|
||||||
@trigger_error('The !!php/object tag to indicate dumped PHP objects is deprecated since version 3.1 and will be removed in 4.0. Use the !php/object tag instead.', E_USER_DEPRECATED);
|
@trigger_error('The !!php/object: tag to indicate dumped PHP objects is deprecated since version 3.1 and will be removed in 4.0. Use the !php/object (without the colon) tag instead.', E_USER_DEPRECATED);
|
||||||
|
|
||||||
return unserialize(substr($scalar, 13));
|
return unserialize(substr($scalar, 13));
|
||||||
}
|
}
|
||||||
@ -639,9 +641,21 @@ class Inline
|
|||||||
throw new ParseException('Object support when parsing a YAML file has been disabled.');
|
throw new ParseException('Object support when parsing a YAML file has been disabled.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
case 0 === strpos($scalar, '!php/object'):
|
||||||
|
if (self::$objectSupport) {
|
||||||
|
return unserialize(self::parseScalar(substr($scalar, 12)));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (self::$exceptionOnInvalidType) {
|
||||||
|
throw new ParseException('Object support when parsing a YAML file has been disabled.');
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
case 0 === strpos($scalar, '!php/const:'):
|
case 0 === strpos($scalar, '!php/const:'):
|
||||||
if (self::$constantSupport) {
|
if (self::$constantSupport) {
|
||||||
|
@trigger_error('The !php/const: tag to indicate dumped PHP constants is deprecated since version 3.4 and will be removed in 4.0. Use the !php/const (without the colon) tag instead.', E_USER_DEPRECATED);
|
||||||
|
|
||||||
if (defined($const = substr($scalar, 11))) {
|
if (defined($const = substr($scalar, 11))) {
|
||||||
return constant($const);
|
return constant($const);
|
||||||
}
|
}
|
||||||
@ -652,6 +666,19 @@ class Inline
|
|||||||
throw new ParseException(sprintf('The string "%s" could not be parsed as a constant. Have you forgotten to pass the "Yaml::PARSE_CONSTANT" flag to the parser?', $scalar));
|
throw new ParseException(sprintf('The string "%s" could not be parsed as a constant. Have you forgotten to pass the "Yaml::PARSE_CONSTANT" flag to the parser?', $scalar));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
case 0 === strpos($scalar, '!php/const'):
|
||||||
|
if (self::$constantSupport) {
|
||||||
|
if (defined($const = self::parseScalar(substr($scalar, 11)))) {
|
||||||
|
return constant($const);
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new ParseException(sprintf('The constant "%s" is not defined.', $const));
|
||||||
|
}
|
||||||
|
if (self::$exceptionOnInvalidType) {
|
||||||
|
throw new ParseException(sprintf('The string "%s" could not be parsed as a constant. Have you forgotten to pass the "Yaml::PARSE_CONSTANT" flag to the parser?', $scalar));
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
case 0 === strpos($scalar, '!!float '):
|
case 0 === strpos($scalar, '!!float '):
|
||||||
return (float) substr($scalar, 8);
|
return (float) substr($scalar, 8);
|
||||||
|
@ -212,7 +212,7 @@ class Parser
|
|||||||
$this->refs[$isRef] = end($data);
|
$this->refs[$isRef] = end($data);
|
||||||
}
|
}
|
||||||
} elseif (
|
} elseif (
|
||||||
self::preg_match('#^(?P<key>'.Inline::REGEX_QUOTED_STRING.'|(?:!?!php/const:)?(?:![^\s]++\s++)?[^ \'"\[\{!].*?) *\:(\s++(?P<value>.+))?$#u', rtrim($this->currentLine), $values)
|
self::preg_match('#^(?P<key>(?:![^\s]++\s++)?(?:'.Inline::REGEX_QUOTED_STRING.'|(?:!?!php/const:)?[^ \'"\[\{!].*?)) *\:(\s++(?P<value>.+))?$#u', rtrim($this->currentLine), $values)
|
||||||
&& (false === strpos($values['key'], ' #') || in_array($values['key'][0], array('"', "'")))
|
&& (false === strpos($values['key'], ' #') || in_array($values['key'][0], array('"', "'")))
|
||||||
) {
|
) {
|
||||||
if ($context && 'sequence' == $context) {
|
if ($context && 'sequence' == $context) {
|
||||||
|
@ -54,7 +54,7 @@ bar';
|
|||||||
public function testConstantAsKey()
|
public function testConstantAsKey()
|
||||||
{
|
{
|
||||||
$yaml = <<<YAML
|
$yaml = <<<YAML
|
||||||
!php/const:Symfony\Component\Yaml\Tests\Command\Foo::TEST: bar
|
!php/const 'Symfony\Component\Yaml\Tests\Command\Foo::TEST': bar
|
||||||
YAML;
|
YAML;
|
||||||
$ret = $this->createCommandTester()->execute(array('filename' => $this->createFile($yaml)), array('verbosity' => OutputInterface::VERBOSITY_VERBOSE, 'decorated' => false));
|
$ret = $this->createCommandTester()->execute(array('filename' => $this->createFile($yaml)), array('verbosity' => OutputInterface::VERBOSITY_VERBOSE, 'decorated' => false));
|
||||||
$this->assertSame(0, $ret, 'lint:yaml exits with code 0 in case of success');
|
$this->assertSame(0, $ret, 'lint:yaml exits with code 0 in case of success');
|
||||||
|
@ -210,7 +210,7 @@ EOF;
|
|||||||
{
|
{
|
||||||
$dump = $this->dumper->dump(array('foo' => new A(), 'bar' => 1), 0, 0, Yaml::DUMP_OBJECT);
|
$dump = $this->dumper->dump(array('foo' => new A(), 'bar' => 1), 0, 0, Yaml::DUMP_OBJECT);
|
||||||
|
|
||||||
$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');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -220,7 +220,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()
|
||||||
|
@ -49,10 +49,10 @@ class InlineTest extends TestCase
|
|||||||
public function getTestsForParsePhpConstants()
|
public function getTestsForParsePhpConstants()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
array('!php/const:Symfony\Component\Yaml\Yaml::PARSE_CONSTANT', Yaml::PARSE_CONSTANT),
|
array('!php/const Symfony\Component\Yaml\Yaml::PARSE_CONSTANT', Yaml::PARSE_CONSTANT),
|
||||||
array('!php/const:PHP_INT_MAX', PHP_INT_MAX),
|
array('!php/const PHP_INT_MAX', PHP_INT_MAX),
|
||||||
array('[!php/const:PHP_INT_MAX]', array(PHP_INT_MAX)),
|
array('[!php/const PHP_INT_MAX]', array(PHP_INT_MAX)),
|
||||||
array('{ foo: !php/const:PHP_INT_MAX }', array('foo' => PHP_INT_MAX)),
|
array('{ foo: !php/const PHP_INT_MAX }', array('foo' => PHP_INT_MAX)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,16 +62,25 @@ class InlineTest extends TestCase
|
|||||||
*/
|
*/
|
||||||
public function testParsePhpConstantThrowsExceptionWhenUndefined()
|
public function testParsePhpConstantThrowsExceptionWhenUndefined()
|
||||||
{
|
{
|
||||||
Inline::parse('!php/const:WRONG_CONSTANT', Yaml::PARSE_CONSTANT);
|
Inline::parse('!php/const WRONG_CONSTANT', Yaml::PARSE_CONSTANT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @expectedException \Symfony\Component\Yaml\Exception\ParseException
|
* @expectedException \Symfony\Component\Yaml\Exception\ParseException
|
||||||
* @expectedExceptionMessageRegExp #The string "!php/const:PHP_INT_MAX" could not be parsed as a constant.*#
|
* @expectedExceptionMessageRegExp #The string "!php/const PHP_INT_MAX" could not be parsed as a constant.*#
|
||||||
*/
|
*/
|
||||||
public function testParsePhpConstantThrowsExceptionOnInvalidType()
|
public function testParsePhpConstantThrowsExceptionOnInvalidType()
|
||||||
{
|
{
|
||||||
Inline::parse('!php/const:PHP_INT_MAX', Yaml::PARSE_EXCEPTION_ON_INVALID_TYPE);
|
Inline::parse('!php/const PHP_INT_MAX', Yaml::PARSE_EXCEPTION_ON_INVALID_TYPE);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group legacy
|
||||||
|
* @expectedDeprecation The !php/const: tag to indicate dumped PHP constants is deprecated since version 3.4 and will be removed in 4.0. Use the !php/const (without the colon) tag instead.
|
||||||
|
*/
|
||||||
|
public function testDeprecatedConstantTag()
|
||||||
|
{
|
||||||
|
Inline::parse('!php/const:PHP_INT_MAX', Yaml::PARSE_CONSTANT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -471,7 +471,7 @@ EOF;
|
|||||||
public function testObjectSupportEnabled()
|
public function testObjectSupportEnabled()
|
||||||
{
|
{
|
||||||
$input = <<<'EOF'
|
$input = <<<'EOF'
|
||||||
foo: !php/object:O:30:"Symfony\Component\Yaml\Tests\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, Yaml::PARSE_OBJECT), '->parse() is able to parse objects');
|
$this->assertEquals(array('foo' => new B(), 'bar' => 1), $this->parser->parse($input, Yaml::PARSE_OBJECT), '->parse() is able to parse objects');
|
||||||
@ -491,14 +491,29 @@ EOF;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @group legacy
|
* @group legacy
|
||||||
|
* @dataProvider deprecatedObjectValueProvider
|
||||||
*/
|
*/
|
||||||
public function testObjectSupportEnabledWithDeprecatedTag()
|
public function testObjectSupportEnabledWithDeprecatedTag($yaml)
|
||||||
{
|
{
|
||||||
$input = <<<'EOF'
|
$this->assertEquals(array('foo' => new B(), 'bar' => 1), $this->parser->parse($yaml, Yaml::PARSE_OBJECT), '->parse() is able to parse objects');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function deprecatedObjectValueProvider()
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
array(
|
||||||
|
<<<YAML
|
||||||
foo: !!php/object:O:30:"Symfony\Component\Yaml\Tests\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;
|
YAML
|
||||||
$this->assertEquals(array('foo' => new B(), 'bar' => 1), $this->parser->parse($input, Yaml::PARSE_OBJECT), '->parse() is able to parse objects');
|
),
|
||||||
|
array(
|
||||||
|
<<<YAML
|
||||||
|
foo: !php/object:O:30:"Symfony\Component\Yaml\Tests\B":1:{s:1:"b";s:3:"foo";}
|
||||||
|
bar: 1
|
||||||
|
YAML
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1813,6 +1828,35 @@ YAML;
|
|||||||
public function testPhpConstantTagMappingKey()
|
public function testPhpConstantTagMappingKey()
|
||||||
{
|
{
|
||||||
$yaml = <<<YAML
|
$yaml = <<<YAML
|
||||||
|
transitions:
|
||||||
|
!php/const 'Symfony\Component\Yaml\Tests\B::FOO':
|
||||||
|
from:
|
||||||
|
- !php/const 'Symfony\Component\Yaml\Tests\B::BAR'
|
||||||
|
to: !php/const 'Symfony\Component\Yaml\Tests\B::BAZ'
|
||||||
|
YAML;
|
||||||
|
$expected = array(
|
||||||
|
'transitions' => array(
|
||||||
|
'foo' => array(
|
||||||
|
'from' => array(
|
||||||
|
'bar',
|
||||||
|
),
|
||||||
|
'to' => 'baz',
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertSame($expected, $this->parser->parse($yaml, Yaml::PARSE_CONSTANT));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @group legacy
|
||||||
|
* @expectedDeprecation The !php/const: tag to indicate dumped PHP constants is deprecated since version 3.4 and will be removed in 4.0. Use the !php/const (without the colon) tag instead.
|
||||||
|
* @expectedDeprecation The !php/const: tag to indicate dumped PHP constants is deprecated since version 3.4 and will be removed in 4.0. Use the !php/const (without the colon) tag instead.
|
||||||
|
* @expectedDeprecation The !php/const: tag to indicate dumped PHP constants is deprecated since version 3.4 and will be removed in 4.0. Use the !php/const (without the colon) tag instead.
|
||||||
|
*/
|
||||||
|
public function testDeprecatedPhpConstantTagMappingKey()
|
||||||
|
{
|
||||||
|
$yaml = <<<YAML
|
||||||
transitions:
|
transitions:
|
||||||
!php/const:Symfony\Component\Yaml\Tests\B::FOO:
|
!php/const:Symfony\Component\Yaml\Tests\B::FOO:
|
||||||
from:
|
from:
|
||||||
@ -1841,10 +1885,10 @@ YAML;
|
|||||||
{
|
{
|
||||||
$yaml = <<<YAML
|
$yaml = <<<YAML
|
||||||
transitions:
|
transitions:
|
||||||
!php/const:Symfony\Component\Yaml\Tests\B::FOO:
|
!php/const 'Symfony\Component\Yaml\Tests\B::FOO':
|
||||||
from:
|
from:
|
||||||
- !php/const:Symfony\Component\Yaml\Tests\B::BAR
|
- !php/const 'Symfony\Component\Yaml\Tests\B::BAR'
|
||||||
to: !php/const:Symfony\Component\Yaml\Tests\B::BAZ
|
to: !php/const 'Symfony\Component\Yaml\Tests\B::BAZ'
|
||||||
YAML;
|
YAML;
|
||||||
$expected = array(
|
$expected = array(
|
||||||
'transitions' => array(
|
'transitions' => array(
|
||||||
|
Reference in New Issue
Block a user