Yaml.php

Same filename in this branch
  1. 9 core/lib/Drupal/Core/Serialization/Yaml.php
Same filename and directory in other branches
  1. 8.9.x core/lib/Drupal/Core/Serialization/Yaml.php
  2. 8.9.x core/lib/Drupal/Component/Serialization/Yaml.php
  3. 10 core/lib/Drupal/Core/Serialization/Yaml.php
  4. 10 core/lib/Drupal/Component/Serialization/Yaml.php
  5. 11.x core/lib/Drupal/Core/Serialization/Yaml.php
  6. 11.x core/lib/Drupal/Component/Serialization/Yaml.php

Namespace

Drupal\Component\Serialization

File

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

View source
<?php

namespace Drupal\Component\Serialization;


/**
 * Provides a YAML serialization implementation.
 *
 * Proxy implementation that will choose the best library based on availability.
 */
class Yaml implements SerializationInterface {
    
    /**
     * The YAML implementation to use.
     *
     * @var \Drupal\Component\Serialization\SerializationInterface
     */
    protected static $serializer;
    
    /**
     * {@inheritdoc}
     */
    public static function encode($data) {
        // Instead of using \Drupal\Component\Serialization\Yaml::getSerializer(),
        // always using Symfony for writing the data, to reduce the risk of having
        // differences if different environments (like production and development)
        // do not match in terms of what YAML implementation is available.
        return YamlSymfony::encode($data);
    }
    
    /**
     * {@inheritdoc}
     */
    public static function decode($raw) {
        $serializer = static::getSerializer();
        return $serializer::decode($raw);
    }
    
    /**
     * {@inheritdoc}
     */
    public static function getFileExtension() {
        return 'yml';
    }
    
    /**
     * Determines which implementation to use for parsing YAML.
     */
    protected static function getSerializer() {
        if (!isset(static::$serializer)) {
            // Use the PECL YAML extension if it is available. It has better
            // performance for file reads and is YAML compliant.
            if (extension_loaded('yaml')) {
                static::$serializer = YamlPecl::class;
            }
            else {
                // Otherwise, fallback to the Symfony implementation.
                static::$serializer = YamlSymfony::class;
            }
        }
        return static::$serializer;
    }

}

Classes

Title Deprecated Summary
Yaml Provides a YAML serialization implementation.

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