Custom De-/Serialization Handlers ================================= Introduction ------------ This allows you to change the way of how a specifc type is being de-/serialized. Any handler must implement either the ``SerializationHandlerInterface``, or ``DeserializationHandlerInterface``, or both. This bundle already comes with some handlers which you find in the Serializer/Handler folder, and which you can use as a starting point. Custom handlers are normal services, and thus can have dependencies on any other service available in the dependency injection container. Configuration ------------- After you have written your handler, you can write a service definition. Such as the following: .. code-block :: xml The Handler Factory ------------------- What is left to do is to publish our new handler to this bundle. So it gets picked up, and wired correctly. In order to do this, this bundle uses a configuration system similar to that of the SecurityBundle. Each handler needs a corresponding definition factory: .. code-block :: php children() ->scalarNode('foo')->end() ->scalarNode('bar')->end() ->end() ; } public function getHandlerId(ContainerBuilder $container, array $config) { return 'acme_foo.serializer.my_handler'; } } This factory is responsible for setting up the configuration for your handler in the ``addConfiguration`` method, and then process that configuration in the ``getHandlerId`` method. The last thing left to do, is to add this factory to this bundle. This is done by adding a ``configureSerializerExtension`` to your bundle class: .. code-block :: php addHandlerFactory(new FooFactory()); } } Enabling Your Handler --------------------- TODO: Add example config .. tip :: The order in which the handlers are listed in the "handlers" section defines in which they are called while processing.