SerializerContextTrait.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. /**
  3. * File SerializerContextTrait.php
  4. *
  5. * @author Edward Pfremmer <epfremme@nerdery.com>
  6. */
  7. namespace Epfremme\Swagger\Tests\Mixin;
  8. use Epfremme\Swagger\Listener\SerializationSubscriber;
  9. use JMS\Serializer\EventDispatcher\EventDispatcher;
  10. use JMS\Serializer\Serializer;
  11. use JMS\Serializer\SerializerBuilder;
  12. /**
  13. * Class SerializerContextTrait
  14. *
  15. * Adds static pre-configured JMS serializer to test class.
  16. *
  17. * @package Epfremme\Swagger
  18. * @subpackage Tests\Entity
  19. */
  20. trait SerializerContextTrait
  21. {
  22. /**
  23. * @var Serializer
  24. */
  25. protected static $serializer;
  26. /**
  27. * {@inheritdoc}
  28. */
  29. public static function setUpBeforeClass()
  30. {
  31. $builder = SerializerBuilder::create();
  32. $builder->configureListeners(function(EventDispatcher $eventDispatcher) {
  33. $eventDispatcher->addSubscriber(new SerializationSubscriber());
  34. });
  35. self::$serializer = $builder->build();
  36. }
  37. /**
  38. * Return the serializer
  39. *
  40. * @return Serializer
  41. */
  42. public function getSerializer()
  43. {
  44. if (!self::$serializer) self::setUpBeforeClass();
  45. return self::$serializer;
  46. }
  47. }