YamlSymfony.php

Same filename in other branches
  1. 8.9.x core/lib/Drupal/Component/Serialization/YamlSymfony.php
  2. 10 core/lib/Drupal/Component/Serialization/YamlSymfony.php
  3. 11.x core/lib/Drupal/Component/Serialization/YamlSymfony.php

Namespace

Drupal\Component\Serialization

File

core/lib/Drupal/Component/Serialization/YamlSymfony.php

View source
<?php

namespace Drupal\Component\Serialization;

use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
use Symfony\Component\Yaml\Parser;
use Symfony\Component\Yaml\Dumper;
use Symfony\Component\Yaml\Yaml as SymfonyYaml;

/**
 * Default serialization for YAML using the Symfony component.
 */
class YamlSymfony implements SerializationInterface {
    
    /**
     * {@inheritdoc}
     */
    public static function encode($data) {
        try {
            // Set the indentation to 2 to match Drupal's coding standards.
            $yaml = new Dumper(2);
            return $yaml->dump($data, PHP_INT_MAX, 0, SymfonyYaml::DUMP_EXCEPTION_ON_INVALID_TYPE | SymfonyYaml::DUMP_MULTI_LINE_LITERAL_BLOCK);
        } catch (\Exception $e) {
            throw new InvalidDataTypeException($e->getMessage(), $e->getCode(), $e);
        }
    }
    
    /**
     * {@inheritdoc}
     */
    public static function decode($raw) {
        try {
            $yaml = new Parser();
            // Make sure we have a single trailing newline. A very simple config like
            // 'foo: bar' with no newline will fail to parse otherwise.
            return $yaml->parse($raw, SymfonyYaml::PARSE_EXCEPTION_ON_INVALID_TYPE);
        } catch (\Exception $e) {
            throw new InvalidDataTypeException($e->getMessage(), $e->getCode(), $e);
        }
    }
    
    /**
     * {@inheritdoc}
     */
    public static function getFileExtension() {
        return 'yml';
    }

}

Classes

Title Deprecated Summary
YamlSymfony Default serialization for YAML using the Symfony component.

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.