ObjectBasedFactory.php 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace JMS\SerializerBundle\DependencyInjection\Factory;
  3. use JMS\SerializerBundle\DependencyInjection\HandlerFactoryInterface;
  4. use Symfony\Component\DependencyInjection\ContainerBuilder;
  5. use Symfony\Component\Config\Definition\Builder\ArrayNodeDefinition;
  6. class ObjectBasedFactory implements HandlerFactoryInterface
  7. {
  8. public function getConfigKey()
  9. {
  10. return 'object_based';
  11. }
  12. public function getType(array $config)
  13. {
  14. $type = 0;
  15. if ($config['serialization']) {
  16. $type |= self::TYPE_SERIALIZATION;
  17. }
  18. if ($config['deserialization']) {
  19. $type |= self::TYPE_DESERIALIZATION;
  20. }
  21. return $type;
  22. }
  23. public function addConfiguration(ArrayNodeDefinition $node)
  24. {
  25. $node
  26. ->treatTrueLike(array('serialization' => true, 'deserialization' => true))
  27. ->treatNullLike(array('serialization' => true, 'deserialization' => true))
  28. ->treatFalseLike(array('serialization' => false, 'deserialization' => false))
  29. ->addDefaultsIfNotSet()
  30. ->children()
  31. ->booleanNode('serialization')->defaultFalse()->end()
  32. ->booleanNode('deserialization')->defaultFalse()->end()
  33. ->end()
  34. ;
  35. }
  36. public function getHandlerId(ContainerBuilder $container, array $config)
  37. {
  38. return 'jms_serializer.object_based_custom_handler';
  39. }
  40. }