/**
  * Serializes a Reference object (if not serialized already).
  *
  * @param Reference|array $reference
  * @return array
  */
 protected function serializeReference($reference)
 {
     if ($reference instanceof Reference) {
         $reference = $this->serializerFactory->newReferenceSerializer()->serialize($reference);
     }
     return $reference;
 }
 /**
  * @dataProvider referenceProvider
  */
 public function testSnakSerializationRoundtrips(Reference $reference)
 {
     $serializerFactory = new SerializerFactory(new DataValueSerializer());
     $deserializerFactory = new DeserializerFactory(new DataValueDeserializer(), new BasicEntityIdParser());
     $serialization = $serializerFactory->newReferenceSerializer()->serialize($reference);
     $newReference = $deserializerFactory->newReferenceDeserializer()->deserialize($serialization);
     $this->assertTrue($reference->equals($newReference));
 }
示例#3
0
 /**
  * Get serialized reference and add it to result
  *
  * @param Reference $reference
  *
  * @since 0.5
  */
 public function addReference(Reference $reference)
 {
     $serializer = $this->serializerFactory->newReferenceSerializer();
     //TODO: this is currently only used to add a Reference as the top level structure,
     //      with a null path and a fixed name. Would be nice to also allow references
     //      to be added to a list, using a path and a id key or index.
     $value = $serializer->serialize($reference);
     $value = $this->getArrayWithDataTypesInGroupedSnakListAtPath($value, 'snaks');
     if ($this->addMetaData) {
         $value = $this->getReferenceArrayWithMetaData($value);
     }
     $this->setValue(null, 'reference', $value);
 }