/**
  * @param array $transformed
  * @param string $type
  * @return object
  * @throws \Exception
  */
 protected function revertObject($transformed, $type)
 {
     $class = new \ReflectionClass($type);
     $instance = $class->newInstanceWithoutConstructor();
     if (!is_array($transformed)) {
         throw new \Exception("Error while reverting [{$type}]. Input is not an array: " . ValuePrinter::serialize($transformed));
     }
     $reader = new PropertyReader($this->types, $class->getName());
     $properties = [];
     foreach ($reader->readState() as $property) {
         $properties[] = $property->name();
         if (array_key_exists($property->name(), $transformed)) {
             $value = new TypedValue($transformed[$property->name()], $property->type());
             $transformer = $this->transformers->toRevert($value);
             $property->set($instance, $transformer->revert($value));
         }
     }
     foreach ($transformed as $key => $value) {
         if (!in_array($key, $properties)) {
             $transformer = $this->transformers->toRevert($value);
             $instance->{$key} = $transformer->revert($value);
         }
     }
     return $instance;
 }
Example #2
0
 /**
  * @param TypedValue $transformed
  * @return object
  */
 public function revert($transformed)
 {
     /** @var ClassType $type */
     $type = $transformed->getType();
     $array = [ObjectTransformer::TYPE_KEY => $type->getClass(), ObjectTransformer::DATA_KEY => $transformed->getValue()];
     return $this->transformers->toRevert($array)->revert($array);
 }
Example #3
0
 /**
  * @param string $key
  * @return mixed
  * @throws \Exception|NotFoundException
  */
 public function read($key)
 {
     $serialized = $this->readSerialized($key);
     $inflated = $this->serializer->inflate($serialized);
     $value = new TypedValue($inflated, $this->type);
     $reverted = $this->transformers->toRevert($value)->revert($value);
     return $reverted;
 }
Example #4
0
 /**
  * @param TypedValue $typedArray
  * @return array
  */
 public function revert($typedArray)
 {
     $reverted = [];
     foreach ($typedArray->getValue() as $key => $value) {
         $typedValue = $this->typedItem($typedArray->getType(), $value);
         $reverted[$key] = $this->transformers->toRevert($typedValue)->revert($typedValue);
     }
     return $reverted;
 }
Example #5
0
 /**
  * @param array $array
  * @return array
  */
 public function revert($array)
 {
     $reverted = [];
     foreach ($array as $key => $value) {
         $key = str_replace(array_values(self::$ESCAPE_KEYS), array_keys(self::$ESCAPE_KEYS), $key);
         $reverted[$key] = $this->transformers->toRevert($value)->revert($value);
     }
     return $reverted;
 }
Example #6
0
 /**
  * @param TypedValue $transformed
  * @return mixed
  */
 public function revert($transformed)
 {
     return $this->transformers->toRevert($transformed->getValue())->revert($transformed->getValue());
 }
 /**
  * @param TypedValue $transformed
  * @return mixed
  */
 public function revert($transformed)
 {
     $innerValue = $this->makeInnerTypedValue($transformed);
     return $this->transformers->toRevert($innerValue)->revert($innerValue);
 }