Новое в Symfony 2.6: Поддержка объектных карт в компоненте YAML

В YAML Компонент содержит функционал для парсинга и сохранения YAML файлов в PHP-приложениях. Хотя он и не реализует все о чем говорится в YAML 1.2 спецификации, все же он поддерживает большинство функций.

Symfony 2.6 предоставляет поддержку новой YAML фичи: объектные карты. В предыдущих версиях, анализатор возвращал ассоциативные массивы PHP для карт ({‘ключ1’: ‘значение1’, ‘ключ2’: ‘значение2’}). Это могло вызвать некоторые проблемы, когда YAML сериализовался в другие форматы, такие как JSON. Теперь, когда пользователь включает поддержку объектных карт, карты представляются как StdClass() объекты, а не как обычные массивы.

Для того, чтобы включить поддержку объектных карт, необходимо передать значение true в качестве нового, четвертого аргумента метода parse(). Его значение по умолчанию является false для поддержки обратной совместимости. Вот некоторые примеры поведения нового parse() метода:

use Symfony\Component\Yaml\Parser;
$yaml = new Parser();

$yaml->parse('[  foo, [  bar, foo  ]  ]', false, false, true);
// output: array('foo', array('bar', 'foo'))

$yaml->parse('[ { foo: { bar: foo } } ]', false, false, true);
// output: array((object) array('foo' => (object) array('bar' => 'foo')))

$yaml->parse('{ foo: bar, bar: { } }', false, false, true);
// output: (object) array('foo' => 'bar', 'bar' => new \stdClass())

$yaml->parse('{ foo: bar, bar: { } }', false, false, false);
// output: (object) array('foo' => 'bar', 'bar' => array())

$yaml->parse('{ foo: [ ], bar: { } }', false, false, true);
// output: (object) array('foo' => array(), 'bar' => new \stdClass())

$yaml->parse('{ foo: [ ], bar: { } }', false, false, false);
// output: (object) array('foo' => array(), 'bar' => array())

 

 

Добавить комментарий

Ваш адрес email не будет опубликован.

один × два =