浏览代码

move null option to serialize method

mattw 12 年之前
父节点
当前提交
dfb2d9f849
共有 1 个文件被更改,包括 4 次插入3 次删除
  1. 4 3
      Serializer/Serializer.php

+ 4 - 3
Serializer/Serializer.php

@@ -40,6 +40,7 @@ class Serializer implements SerializerInterface
     private $serializationVisitors;
     private $deserializationVisitors;
     private $exclusionStrategy;
+    private $serializeNull;
 
     public function __construct(MetadataFactoryInterface $factory, HandlerRegistryInterface $handlerRegistry, ObjectConstructorInterface $objectConstructor, EventDispatcherInterface $dispatcher = null, TypeParser $typeParser = null, array $serializationVisitors = array(), array $deserializationVisitors = array())
     {
@@ -50,13 +51,12 @@ class Serializer implements SerializerInterface
         $this->typeParser = $typeParser ?: new TypeParser();
         $this->serializationVisitors = $serializationVisitors;
         $this->deserializationVisitors = $deserializationVisitors;
+        $this->serializeNull = false;
     }
 
     public function setSerializeNull($serializeNull)
     {
-        foreach (array_keys($this->serializationVisitors) as $format) {
-            $this->getSerializationVisitor($format)->setSerializeNull($serializeNull);
-        }
+        $this->serializeNull = $serializeNull;
     }
 
     public function setExclusionStrategy(ExclusionStrategyInterface $exclusionStrategy = null)
@@ -89,6 +89,7 @@ class Serializer implements SerializerInterface
     public function serialize($data, $format)
     {
         $visitor = $this->getSerializationVisitor($format);
+        $visitor->setSerializeNull($this->serializeNull);
         $visitor->setNavigator($navigator = new GraphNavigator(GraphNavigator::DIRECTION_SERIALIZATION, $this->factory, $format, $this->handlerRegistry, $this->objectConstructor, $this->exclusionStrategy, $this->dispatcher));
         $navigator->accept($visitor->prepare($data), null, $visitor);