You are here

abstract class NormalizerBase in Zircon Profile 8

Same name in this branch
  1. 8 core/modules/hal/src/Normalizer/NormalizerBase.php \Drupal\hal\Normalizer\NormalizerBase
  2. 8 core/modules/serialization/src/Normalizer/NormalizerBase.php \Drupal\serialization\Normalizer\NormalizerBase
Same name and namespace in other branches
  1. 8.0 core/modules/serialization/src/Normalizer/NormalizerBase.php \Drupal\serialization\Normalizer\NormalizerBase

Base class for Normalizers.

Hierarchy

Expanded class hierarchy of NormalizerBase

2 files declare their use of NormalizerBase
NormalizerBase.php in core/modules/hal/src/Normalizer/NormalizerBase.php
Contains \Drupal\hal\Normalizer\NormalizerBase.
NormalizerBaseTest.php in core/modules/serialization/tests/src/Unit/Normalizer/NormalizerBaseTest.php
Contains \Drupal\Tests\serialization\Unit\Normalizer\NormalizerBaseTest.

File

core/modules/serialization/src/Normalizer/NormalizerBase.php, line 16
Contains \Drupal\serialization\Normalizer\NormalizerBase.

Namespace

Drupal\serialization\Normalizer
View source
abstract class NormalizerBase extends SerializerAwareNormalizer implements NormalizerInterface {

  /**
   * The interface or class that this Normalizer supports.
   *
   * @var string|array
   */
  protected $supportedInterfaceOrClass;

  /**
   * {@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, so 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);
  }

}

Members

Namesort descending Modifiers Type Description Overrides
NormalizerBase::$supportedInterfaceOrClass protected property The interface or class that this Normalizer supports. 7
NormalizerBase::checkFormat protected function Checks if the provided format is supported by this normalizer.
NormalizerBase::supportsDenormalization public function Implements \Symfony\Component\Serializer\Normalizer\DenormalizerInterface::supportsDenormalization() 1
NormalizerBase::supportsNormalization public function Checks whether the given class is supported for normalization by this normalizer. Overrides NormalizerInterface::supportsNormalization 1
NormalizerInterface::normalize public function Normalizes an object into a set of arrays/scalars. 15
SerializerAwareNormalizer::$serializer protected property
SerializerAwareNormalizer::setSerializer public function Sets the owning Serializer object. Overrides SerializerAwareInterface::setSerializer