/** * 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)); }
/** * 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); }