/** * {@inheritDoc} */ public function createService(ServiceLocatorInterface $serviceLocator) { /** @var $options \JMSSerializerModule\Options\Handlers */ $options = $this->getOptions($serviceLocator, 'handlers'); $handlerRegistry = new HandlerRegistry(); foreach ($options->getSubscribers() as $subscriberName) { $subscriber = $subscriberName; if (is_string($subscriber)) { if ($serviceLocator->has($subscriber)) { $subscriber = $serviceLocator->get($subscriber); } elseif (class_exists($subscriber)) { $subscriber = new $subscriber(); } } if ($subscriber instanceof SubscribingHandlerInterface) { $handlerRegistry->registerSubscribingHandler($subscriber); continue; } throw new InvalidArgumentException(sprintf('Invalid subscriber "%s" given, must be a service name, ' . 'class name or an instance implementing JMS\\Serializer\\Handler\\SubscribingHandlerInterface; ', is_object($subscriberName) ? get_class($subscriberName) : (is_string($subscriberName) ? $subscriberName : gettype($subscriber)))); } return $handlerRegistry; }
/** * @dataProvider getDateTime * @group datetime */ public function testDateTimeNoCData($key, $value, $type) { $handlerRegistry = new HandlerRegistry(); $handlerRegistry->registerSubscribingHandler(new DateHandler(\DateTime::ISO8601, 'UTC', false)); $objectConstructor = new UnserializeObjectConstructor(); $serializer = new Serializer($this->factory, $handlerRegistry, $objectConstructor, $this->serializationVisitors, $this->deserializationVisitors); $this->assertEquals($this->getContent($key . '_no_cdata'), $serializer->serialize($value, $this->getFormat())); }