Security update for Core, with self-updated composer
[yaffs-website] / web / core / modules / serialization / src / Encoder / XmlEncoder.php
1 <?php
2
3 namespace Drupal\serialization\Encoder;
4
5 use Symfony\Component\Serializer\Encoder\EncoderInterface;
6 use Symfony\Component\Serializer\Encoder\DecoderInterface;
7 use Symfony\Component\Serializer\Encoder\SerializerAwareEncoder;
8 use Symfony\Component\Serializer\Encoder\XmlEncoder as BaseXmlEncoder;
9
10 /**
11  * Adds XML support for serializer.
12  *
13  * This acts as a wrapper class for Symfony's XmlEncoder so that it is not
14  * implementing NormalizationAwareInterface, and can be normalized externally.
15  */
16 class XmlEncoder extends SerializerAwareEncoder implements EncoderInterface, DecoderInterface {
17
18   /**
19    * The formats that this Encoder supports.
20    *
21    * @var array
22    */
23   static protected $format = ['xml'];
24
25   /**
26    * An instance of the Symfony XmlEncoder to perform the actual encoding.
27    *
28    * @var \Symfony\Component\Serializer\Encoder\XmlEncoder
29    */
30   protected $baseEncoder;
31
32   /**
33    * Gets the base encoder instance.
34    *
35    * @return \Symfony\Component\Serializer\Encoder\XmlEncoder
36    *   The base encoder.
37    */
38   public function getBaseEncoder() {
39     if (!isset($this->baseEncoder)) {
40       $this->baseEncoder = new BaseXmlEncoder();
41       $this->baseEncoder->setSerializer($this->serializer);
42     }
43
44     return $this->baseEncoder;
45   }
46
47   /**
48    * Sets the base encoder instance.
49    *
50    * @param \Symfony\Component\Serializer\Encoder\XmlEncoder $encoder
51    */
52   public function setBaseEncoder($encoder) {
53     $this->baseEncoder = $encoder;
54   }
55
56   /**
57    * {@inheritdoc}
58    */
59   public function encode($data, $format, array $context = []) {
60     return $this->getBaseEncoder()->encode($data, $format, $context);
61   }
62
63   /**
64    * {@inheritdoc}
65    */
66   public function supportsEncoding($format) {
67     return in_array($format, static::$format);
68   }
69
70   /**
71    * {@inheritdoc}
72    */
73   public function decode($data, $format, array $context = []) {
74     return $this->getBaseEncoder()->decode($data, $format, $context);
75   }
76
77   /**
78    * {@inheritdoc}
79    */
80   public function supportsDecoding($format) {
81     return in_array($format, static::$format);
82   }
83
84 }