/** * @param mixed $data * @param null|string $key * @return string The key * @throws \Exception */ public function write($data, $key = null) { $value = new TypedValue($data, $this->type); $transformed = $this->transformers->toTransform($value)->transform($value); $serialized = $this->serializer->serialize($transformed); $this->writeSerialized($serialized, $key); return $key; }
/** * @param TypedValue $typedArray * @return array */ public function transform($typedArray) { $transformed = []; foreach ($typedArray->getValue() as $key => $value) { $typedValue = $this->typedItem($typedArray->getType(), $value); $transformed[$key] = $this->transformers->toTransform($typedValue)->transform($typedValue); } return $transformed; }
/** * @param array $array * @return array */ public function transform($array) { $transformed = []; foreach ($array as $key => $value) { $key = str_replace(array_keys(self::$ESCAPE_KEYS), array_values(self::$ESCAPE_KEYS), $key); $transformed[$key] = $this->transformers->toTransform($value)->transform($value); } return $transformed; }
/** * @param object $object * @return array * @throws \Exception */ protected function transformObject($object) { $reader = new PropertyReader($this->types, $object); $array = []; foreach ($reader->readState() as $property) { $value = new TypedValue($property->get($object), $property->type()); $transformer = $this->transformers->toTransform($value); $array[$property->name()] = $transformer->transform($value); } foreach ($object as $propertyName => $propertyValue) { if (!array_key_exists($propertyName, $array)) { $transformer = $this->transformers->toTransform($propertyValue); $array[$propertyName] = $transformer->transform($propertyValue); } } return $array; }
/** * @param TypedValue $value * @return mixed */ public function transform($value) { return $this->transformers->toTransform($value->getValue())->transform($value->getValue()); }
/** * @param TypedValue $value * @return mixed */ public function transform($value) { $innerValue = $this->makeInnerTypedValue($value); return $this->transformers->toTransform($innerValue)->transform($innerValue); }
/** * @param TypedValue $value * @return array */ public function transform($value) { $realValue = $value->getValue(); $transformedArray = $this->transformers->toTransform($realValue)->transform($realValue); return $transformedArray[ObjectTransformer::DATA_KEY]; }