Denormalizes data back into an object of the given class
mixed $data data to restore:
string $class the expected class to instantiate:
string $format format the given data was extracted from:
object
Overrides DenormalizerInterface::denormalize
public function denormalize($data, $class, $format = null) {
$reflectionClass = new \ReflectionClass($class);
$constructor = $reflectionClass
->getConstructor();
if ($constructor) {
$constructorParameters = $constructor
->getParameters();
$params = array();
foreach ($constructorParameters as $constructorParameter) {
$paramName = lcfirst($constructorParameter->name);
if (isset($data[$paramName])) {
$params[] = $data[$paramName];
// don't run set for a parameter passed to the constructor
unset($data[$paramName]);
}
elseif (!$constructorParameter
->isOptional()) {
throw new RuntimeException('Cannot create an instance of ' . $class . ' from serialized data because its constructor requires ' . 'parameter "' . $constructorParameter->name . '" to be present.');
}
}
$object = $reflectionClass
->newInstanceArgs($params);
}
else {
$object = new $class();
}
foreach ($data as $attribute => $value) {
$setter = 'set' . $attribute;
if (method_exists($object, $setter)) {
$object
->{$setter}($value);
}
}
return $object;
}