64 lines
2.0 KiB
ReStructuredText
64 lines
2.0 KiB
ReStructuredText
|
Handlers
|
||
|
========
|
||
|
|
||
|
Introduction
|
||
|
------------
|
||
|
Handlers allow you to change the serialization, or deserialization process
|
||
|
for a single type/format combination.
|
||
|
|
||
|
Handlers are simple callback which receive three arguments: the visitor,
|
||
|
the data, and the type.
|
||
|
|
||
|
Simple Callables
|
||
|
----------------
|
||
|
You can register simple callables on the builder object::
|
||
|
|
||
|
$builder
|
||
|
->configureHandlers(function(JMS\Serializer\Handler\HandlerRegistry $registry) {
|
||
|
$registry->registerHandler('serialization', 'MyObject', 'json',
|
||
|
function($visitor, MyObject $obj, array $type) {
|
||
|
return $obj->getName();
|
||
|
}
|
||
|
);
|
||
|
})
|
||
|
;
|
||
|
|
||
|
Subscribing Handlers
|
||
|
--------------------
|
||
|
Subscribing handlers contain the configuration themselves which makes them easier to share with other users,
|
||
|
and easier to set-up in general::
|
||
|
|
||
|
use JMS\Serializer\Handler\SubscribingHandlerInterface;
|
||
|
use JMS\Serializer\GraphNavigator;
|
||
|
use JMS\Serializer\JsonSerializationVisitor;
|
||
|
use JMS\Serializer\Context;
|
||
|
|
||
|
class MyHandler implements SubscribingHandlerInterface
|
||
|
{
|
||
|
public static function getSubscribingMethods()
|
||
|
{
|
||
|
return array(
|
||
|
array(
|
||
|
'direction' => GraphNavigator::DIRECTION_SERIALIZATION,
|
||
|
'format' => 'json',
|
||
|
'type' => 'DateTime',
|
||
|
'method' => 'serializeDateTimeToJson',
|
||
|
),
|
||
|
);
|
||
|
}
|
||
|
|
||
|
public function serializeDateTimeToJson(JsonSerializationVisitor $visitor, \DateTime $date, array $type, Context $context)
|
||
|
{
|
||
|
return $date->format($type['params'][0]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Also, this type of handler is registered via the builder object::
|
||
|
|
||
|
$builder
|
||
|
->configureHandlers(function(JMS\Serializer\Handler\HandlerRegistry $registry) {
|
||
|
$registry->registerSubscribingHandler(new MyHandler());
|
||
|
})
|
||
|
;
|
||
|
|