DoctrineProxySubscriber.php 860 B

123456789101112131415161718192021222324252627282930
  1. <?php
  2. namespace JMS\SerializerBundle\Serializer\EventDispatcher\Subscriber;
  3. use Doctrine\Common\Persistence\Proxy;
  4. use Doctrine\ORM\Proxy\Proxy as ORMProxy;
  5. use JMS\SerializerBundle\Serializer\EventDispatcher\PreSerializeEvent;
  6. use JMS\SerializerBundle\Serializer\EventDispatcher\EventSubscriberInterface;
  7. class DoctrineProxySubscriber implements EventSubscriberInterface
  8. {
  9. public function onPreSerialize(PreSerializeEvent $event)
  10. {
  11. $object = $event->getObject();
  12. if ( ! $object instanceof Proxy && ! $object instanceof ORMProxy) {
  13. return;
  14. }
  15. $object->__load();
  16. $event->setType(get_parent_class($object));
  17. }
  18. public static function getSubscribedEvents()
  19. {
  20. return array(
  21. array('event' => 'serializer.pre_serialize', 'method' => 'onPreSerialize'),
  22. );
  23. }
  24. }