contentserialize-8.x-1.x-dev/src/Exporter.php

src/Exporter.php
<?php

namespace Drupal\contentserialize;

use Drupal\Core\Entity\ContentEntityInterface;
use Symfony\Component\Serializer\Exception\InvalidArgumentException;
use Symfony\Component\Serializer\SerializerInterface;

/**
 * Serializes entities and metadata with Drupal's serializer service.
 *
 * @todo Export dependencies so the import can be done in a sensible order.
 * @todo Return Result object.
 */
class Exporter implements ExporterInterface {

  /**
   * The serialializer service.
   *
   * @var \Symfony\Component\Serializer\SerializerInterface
   */
  protected $serializer;

  /**
   * Creates a new Exporter.
   *
   * @param \Symfony\Component\Serializer\SerializerInterface $serializer
   *   The serializer service.
   */
  public function __construct(SerializerInterface $serializer) {
    $this->serializer = $serializer;
  }

  /**
   * {@inheritdoc}
   */
  public function export(ContentEntityInterface $entity, $format, array $context = []) {
    if (!$entity instanceof ContentEntityInterface) {
      throw new InvalidArgumentException("Trying to export entity that isn't a content entity");
    }
    $serialized_data = $this->serializer->serialize($entity, $format, $context);
    return new SerializedEntity($serialized_data, $format, $entity->uuid(), $entity->getEntityTypeId());
  }

  /**
   * {@inheritdoc}
   */
  public function exportMultiple($entities, $format, array $context = []) {
    foreach ($entities as $entity) {
      yield $this->export($entity, $format, $context);
    }
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc