Mercurial > hg > isophonics-drupal-site
view core/lib/Drupal/Component/Serialization/Yaml.php @ 17:129ea1e6d783
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:21:36 +0000 |
parents | 4c8ae668cc8c |
children |
line wrap: on
line 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; } }