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); } } }