DateTimeFactory.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. <?php
  2. namespace JMS\SerializerBundle\DependencyInjection\Factory;
  3. use JMS\SerializerBundle\DependencyInjection\HandlerFactoryInterface;
  4. use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
  5. use Symfony\Component\DependencyInjection\ContainerBuilder;
  6. class DateTimeFactory implements HandlerFactoryInterface
  7. {
  8. public function getConfigKey()
  9. {
  10. return 'datetime';
  11. }
  12. public function getType(array $config)
  13. {
  14. return self::TYPE_ALL;
  15. }
  16. public function addConfiguration(ArrayNodeDefinition $builder)
  17. {
  18. $builder
  19. ->addDefaultsIfNotSet()
  20. ->canBeUnset()
  21. ->children()
  22. ->scalarNode('format')->defaultValue(\DateTime::ISO8601)->end()
  23. ->scalarNode('default_timezone')->defaultValue(date_default_timezone_get())->end()
  24. ->end()
  25. ;
  26. }
  27. public function getHandlerId(ContainerBuilder $container, array $config)
  28. {
  29. $container
  30. ->getDefinition('jms_serializer.datetime_handler')
  31. ->addArgument($config['format'])
  32. ->addArgument($config['default_timezone'])
  33. ;
  34. return 'jms_serializer.datetime_handler';
  35. }
  36. }