diff --git a/core/.deprecation-ignore.txt b/core/.deprecation-ignore.txt index 3c1c894cf17ddc6800ed955efab261d6e2c81c6c..c2720827823c60b7a377174389cc6491d57500cc 100644 --- a/core/.deprecation-ignore.txt +++ b/core/.deprecation-ignore.txt @@ -49,6 +49,10 @@ %Drupal\\editor\\Form\\EditorImageDialog is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. There is no replacement. See https://www.drupal.org/node/3291493% %Drupal\\editor\\Form\\EditorLinkDialog is deprecated in drupal:10.1.0 and is removed from drupal:11.0.0. There is no replacement. See https://www.drupal.org/node/3291493% +# In Drupal 10, skip deprecations for the "yaml_parser_class" setting. +# This is retained with a BC layer, but removed in Drupal 11. +%The "yaml_parser_class" setting is deprecated in drupal:10.3.0. This setting should be removed from the settings file, since its usage has been removed. See https://www.drupal.org/node/3415489.% + # Symfony 7. %Method "Symfony\\Contracts\\Service\\ResetInterface::reset\(\)" might add "void" as a native return type declaration in the future. Do the same in implementation "Drupal\\Component\\DependencyInjection\\Container" now to avoid errors or add an explicit @return annotation to suppress this message.% diff --git a/core/assets/scaffold/files/default.settings.php b/core/assets/scaffold/files/default.settings.php index 264597b163ba86ca16fb01641d312d55b4a30870..90883ff469b65007eeca02814879c9755e6a495e 100644 --- a/core/assets/scaffold/files/default.settings.php +++ b/core/assets/scaffold/files/default.settings.php @@ -730,6 +730,8 @@ * Provide a fully qualified class name here if you would like to provide an * alternate implementation YAML parser. The class must implement the * \Drupal\Component\Serialization\SerializationInterface interface. + * + * This setting is deprecated in Drupal 10.3 and removed in Drupal 11. */ # $settings['yaml_parser_class'] = NULL; diff --git a/core/lib/Drupal/Core/Serialization/Yaml.php b/core/lib/Drupal/Core/Serialization/Yaml.php index 564fdac993d44390191eaf0f1ea650e2341f2313..6e7b37cf7a8d5ead6065f8463c922acb2890fb96 100644 --- a/core/lib/Drupal/Core/Serialization/Yaml.php +++ b/core/lib/Drupal/Core/Serialization/Yaml.php @@ -1,7 +1,23 @@ <?php -// phpcs:ignoreFile + +namespace Drupal\Core\Serialization; + +use Drupal\Core\Site\Settings; +use Drupal\Component\Serialization\Yaml as ComponentYaml; /** - * Provides a BC layer for Drupal\Core\Serialization\Yaml. + * Provides a YAML serialization implementation. + * + * Allow settings to override the YAML implementation resolution. */ -class_alias('\Drupal\Component\Serialization\Yaml', '\Drupal\Core\Serialization\Yaml'); +class Yaml extends ComponentYaml { + + public static function decode($raw) { + if ($class = Settings::get('yaml_parser_class')) { + return $class::decode($raw); + } + + return parent::decode($raw); + } + +} diff --git a/sites/default/default.settings.php b/sites/default/default.settings.php index 264597b163ba86ca16fb01641d312d55b4a30870..90883ff469b65007eeca02814879c9755e6a495e 100644 --- a/sites/default/default.settings.php +++ b/sites/default/default.settings.php @@ -730,6 +730,8 @@ * Provide a fully qualified class name here if you would like to provide an * alternate implementation YAML parser. The class must implement the * \Drupal\Component\Serialization\SerializationInterface interface. + * + * This setting is deprecated in Drupal 10.3 and removed in Drupal 11. */ # $settings['yaml_parser_class'] = NULL;