X-Git-Url: http://aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fcore%2Fmodules%2Fserialization%2Fsrc%2FNormalizer%2FNormalizerBase.php;h=8792e5088d42b10631ce668f831686ee0abfa2c8;hb=4f1b9b4ab48a8498afac9e2213a02a23ccf4a06c;hp=90d9b752581649e90c35e251f3fff3daf5bfa688;hpb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;p=yaffs-website diff --git a/web/core/modules/serialization/src/Normalizer/NormalizerBase.php b/web/core/modules/serialization/src/Normalizer/NormalizerBase.php index 90d9b7525..8792e5088 100644 --- a/web/core/modules/serialization/src/Normalizer/NormalizerBase.php +++ b/web/core/modules/serialization/src/Normalizer/NormalizerBase.php @@ -2,13 +2,16 @@ namespace Drupal\serialization\Normalizer; -use Symfony\Component\Serializer\Normalizer\NormalizerInterface; -use Symfony\Component\Serializer\Normalizer\SerializerAwareNormalizer; +use Drupal\Core\Cache\CacheableDependencyInterface; +use Symfony\Component\Serializer\SerializerAwareInterface; +use Symfony\Component\Serializer\SerializerAwareTrait; /** * Base class for Normalizers. */ -abstract class NormalizerBase extends SerializerAwareNormalizer implements NormalizerInterface { +abstract class NormalizerBase implements SerializerAwareInterface, CacheableNormalizerInterface { + + use SerializerAwareTrait; /** * The interface or class that this Normalizer supports. @@ -17,6 +20,13 @@ abstract class NormalizerBase extends SerializerAwareNormalizer implements Norma */ protected $supportedInterfaceOrClass; + /** + * List of formats which supports (de-)normalization. + * + * @var string|string[] + */ + protected $format; + /** * {@inheritdoc} */ @@ -29,7 +39,7 @@ abstract class NormalizerBase extends SerializerAwareNormalizer implements Norma $supported = (array) $this->supportedInterfaceOrClass; - return (bool) array_filter($supported, function($name) use ($data) { + return (bool) array_filter($supported, function ($name) use ($data) { return $data instanceof $name; }); } @@ -49,7 +59,7 @@ abstract class NormalizerBase extends SerializerAwareNormalizer implements Norma $supported = (array) $this->supportedInterfaceOrClass; - $subclass_check = function($name) use ($type) { + $subclass_check = function ($name) use ($type) { return (class_exists($name) || interface_exists($name)) && is_subclass_of($type, $name, TRUE); }; @@ -71,7 +81,21 @@ abstract class NormalizerBase extends SerializerAwareNormalizer implements Norma return TRUE; } - return in_array($format, (array) $this->format); + return in_array($format, (array) $this->format, TRUE); + } + + /** + * Adds cacheability if applicable. + * + * @param array $context + * Context options for the normalizer. + * @param $data + * The data that might have cacheability information. + */ + protected function addCacheableDependency(array $context, $data) { + if ($data instanceof CacheableDependencyInterface && isset($context[static::SERIALIZATION_CONTEXT_CACHEABILITY])) { + $context[static::SERIALIZATION_CONTEXT_CACHEABILITY]->addCacheableDependency($data); + } } }