В 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())