public function setUp() { $this->classMapper = new DefaultMapper(new DefaultNameExtractor()); $this->classMapper->register(Serializable::class); $this->classMapper->register(\DateTime::class); $this->classMapper->register(\DateTimeImmutable::class); $this->classMapper->register(\DateTimeZone::class); $this->hydratorFactory = new HydratorFactory(__DIR__ . DIRECTORY_SEPARATOR . 'cache', true); $this->dataFormatter = new FlatFormatter(); $this->instantiator = new Instantiator(); }
/** * @param array $serializedObject * * @return object */ private function deserializeObject(array $serializedObject) { list($name, $payload) = $this->dataFormatter->getNameAndPayload($serializedObject); $curatedPayload = []; foreach ($payload as $key => $value) { $curatedPayload[$key] = $this->recursiveDeserialize($value); } $objectFqcn = $this->classMapper->getClassName($name); foreach ($this->customSerializers as $customSerializer) { if ($customSerializer->canHandle($objectFqcn)) { return $customSerializer->deserialize($curatedPayload, $objectFqcn); } } $object = $this->instantiator->instantiate($objectFqcn); return $this->hydratorFactory->getHydrator($objectFqcn)->hydrate($curatedPayload, $object); }