class NormalizerBase
Base class for Normalizers.
Hierarchy
- class \Drupal\serialization\Normalizer\NormalizerBase implements \Symfony\Component\Serializer\SerializerAwareInterface, \Drupal\serialization\Normalizer\CacheableNormalizerInterface, \Symfony\Component\Serializer\Normalizer\CacheableSupportsMethodInterface uses \Symfony\Component\Serializer\SerializerAwareTrait
 
Expanded class hierarchy of NormalizerBase
6 files declare their use of NormalizerBase
- BooleanNormalizer.php in core/
modules/ serialization/ tests/ modules/ test_datatype_boolean_emoji_normalizer/ src/ Normalizer/ BooleanNormalizer.php  - NormalizerBase.php in core/
modules/ jsonapi/ src/ Normalizer/ NormalizerBase.php  - NormalizerBase.php in core/
modules/ hal/ src/ Normalizer/ NormalizerBase.php  - NormalizerBaseTest.php in core/
modules/ serialization/ tests/ src/ Unit/ Normalizer/ NormalizerBaseTest.php  - Contains \Drupal\Tests\serialization\Unit\Normalizer\NormalizerBaseTest.
 - StringNormalizer.php in core/
modules/ jsonapi/ tests/ modules/ jsonapi_test_data_type/ src/ Normalizer/ StringNormalizer.php  
File
- 
              core/
modules/ serialization/ src/ Normalizer/ NormalizerBase.php, line 13  
Namespace
Drupal\serialization\NormalizerView source
abstract class NormalizerBase implements SerializerAwareInterface, CacheableNormalizerInterface, CacheableSupportsMethodInterface {
  use SerializerAwareTrait;
  
  /**
   * The interface or class that this Normalizer supports.
   *
   * @var string|array
   */
  protected $supportedInterfaceOrClass;
  
  /**
   * List of formats which supports (de-)normalization.
   *
   * @var string|string[]
   */
  protected $format;
  
  /**
   * {@inheritdoc}
   */
  public function supportsNormalization($data, $format = NULL) {
    // If we aren't dealing with an object or the format is not supported return
    // now.
    if (!is_object($data) || !$this->checkFormat($format)) {
      return FALSE;
    }
    $supported = (array) $this->supportedInterfaceOrClass;
    return (bool) array_filter($supported, function ($name) use ($data) {
      return $data instanceof $name;
    });
  }
  
  /**
   * Implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface::supportsDenormalization()
   *
   * This class doesn't implement DenormalizerInterface, but most of its child
   * classes do. Therefore, this method is implemented at this level to reduce
   * code duplication.
   */
  public function supportsDenormalization($data, $type, $format = NULL) {
    // If the format is not supported return now.
    if (!$this->checkFormat($format)) {
      return FALSE;
    }
    $supported = (array) $this->supportedInterfaceOrClass;
    $subclass_check = function ($name) use ($type) {
      return (class_exists($name) || interface_exists($name)) && is_subclass_of($type, $name, TRUE);
    };
    return in_array($type, $supported) || array_filter($supported, $subclass_check);
  }
  
  /**
   * Checks if the provided format is supported by this normalizer.
   *
   * @param string $format
   *   The format to check.
   *
   * @return bool
   *   TRUE if the format is supported, FALSE otherwise. If no format is
   *   specified this will return TRUE.
   */
  protected function checkFormat($format = NULL) {
    if (!isset($format) || !isset($this->format)) {
      return TRUE;
    }
    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);
    }
  }
  
  /**
   * {@inheritdoc}
   */
  public function hasCacheableSupportsMethod() : bool {
    return FALSE;
  }
}
Members
| Title Sort descending | Modifiers | Object type | Summary | Overrides | 
|---|---|---|---|---|
| CacheableNormalizerInterface::SERIALIZATION_CONTEXT_CACHEABILITY | constant | Name of key for bubbling cacheability metadata via serialization context. | ||
| NormalizerBase::$format | protected | property | List of formats which supports (de-)normalization. | 3 | 
| NormalizerBase::$supportedInterfaceOrClass | protected | property | The interface or class that this Normalizer supports. | 22 | 
| NormalizerBase::addCacheableDependency | protected | function | Adds cacheability if applicable. | |
| NormalizerBase::checkFormat | protected | function | Checks if the provided format is supported by this normalizer. | 1 | 
| NormalizerBase::hasCacheableSupportsMethod | public | function | 22 | |
| NormalizerBase::supportsDenormalization | public | function | Implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface::supportsDenormalization() | 1 | 
| NormalizerBase::supportsNormalization | public | function | 1 | 
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.