diff --git a/src/Symfony/Component/Yaml/CHANGELOG.md b/src/Symfony/Component/Yaml/CHANGELOG.md index 45c331f986962..9cc639e3f7162 100644 --- a/src/Symfony/Component/Yaml/CHANGELOG.md +++ b/src/Symfony/Component/Yaml/CHANGELOG.md @@ -1,6 +1,15 @@ CHANGELOG ========= +3.3.0 +----- + + * Added support for dumping empty PHP arrays as YAML sequences: + + ```php + Yaml::dump([], 0, 0, Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE); + ``` + 3.2.0 ----- diff --git a/src/Symfony/Component/Yaml/Inline.php b/src/Symfony/Component/Yaml/Inline.php index c82c45b303be1..30935e53f9f1c 100644 --- a/src/Symfony/Component/Yaml/Inline.php +++ b/src/Symfony/Component/Yaml/Inline.php @@ -164,7 +164,7 @@ public static function dump($value, $flags = 0) } if (Yaml::DUMP_OBJECT_AS_MAP & $flags && ($value instanceof \stdClass || $value instanceof \ArrayObject)) { - return self::dumpArray((array) $value, $flags); + return self::dumpArray((array) $value, $flags & ~Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE); } if (Yaml::DUMP_EXCEPTION_ON_INVALID_TYPE & $flags) { @@ -252,7 +252,7 @@ public static function isHash(array $value) private static function dumpArray($value, $flags) { // array - if ($value && !self::isHash($value)) { + if (($value || Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE & $flags) && !self::isHash($value)) { $output = array(); foreach ($value as $val) { $output[] = self::dump($val, $flags); diff --git a/src/Symfony/Component/Yaml/Tests/DumperTest.php b/src/Symfony/Component/Yaml/Tests/DumperTest.php index 06e9d3f5c38a9..9306a1b858ca8 100644 --- a/src/Symfony/Component/Yaml/Tests/DumperTest.php +++ b/src/Symfony/Component/Yaml/Tests/DumperTest.php @@ -246,6 +246,24 @@ public function testObjectSupportDisabledWithExceptionsPassingTrue() $this->dumper->dump(array('foo' => new A(), 'bar' => 1), 0, 0, true); } + public function testEmptyArray() + { + $dump = $this->dumper->dump(array()); + $this->assertEquals('{ }', $dump); + + $dump = $this->dumper->dump(array(), 0, 0, Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE); + $this->assertEquals('[]', $dump); + + $dump = $this->dumper->dump(array(), 9, 0, Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE); + $this->assertEquals('[]', $dump); + + $dump = $this->dumper->dump(new \ArrayObject(), 0, 0, Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE | Yaml::DUMP_OBJECT_AS_MAP); + $this->assertEquals('{ }', $dump); + + $dump = $this->dumper->dump(new \stdClass(), 0, 0, Yaml::DUMP_EMPTY_ARRAY_AS_SEQUENCE | Yaml::DUMP_OBJECT_AS_MAP); + $this->assertEquals('{ }', $dump); + } + /** * @dataProvider getEscapeSequences */ diff --git a/src/Symfony/Component/Yaml/Yaml.php b/src/Symfony/Component/Yaml/Yaml.php index 46e6ef5c17a83..611ae91a61634 100644 --- a/src/Symfony/Component/Yaml/Yaml.php +++ b/src/Symfony/Component/Yaml/Yaml.php @@ -29,6 +29,7 @@ class Yaml const DUMP_OBJECT_AS_MAP = 64; const DUMP_MULTI_LINE_LITERAL_BLOCK = 128; const PARSE_CONSTANT = 256; + const DUMP_EMPTY_ARRAY_AS_SEQUENCE = 512; /** * Parses YAML into a PHP value. pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy