public function construct(VisitorInterface $visitor, ClassMetadata $metadata, $data, array $type) { if ($type['name'] !== 'JMS\\Serializer\\Tests\\Fixtures\\BlogPost') { return parent::construct($visitor, $metadata, $data, $type); } return new BlogPost('This is a nice title.', new Author('Foo Bar'), new \DateTime('2011-07-30 00:00', new \DateTimeZone('UTC'))); }
public function construct(VisitorInterface $visitor, ClassMetadata $metadata, $data, array $type, DeserializationContext $context) { /* @var $reflection \ReflectionClass */ $reflection = $metadata->reflection; $class = $metadata->name; $constructor = $reflection->getConstructor(); if ($constructor) { $constructorParameters = $constructor->getParameters(); $params = array(); foreach ($constructorParameters as $constructorParameter) { $paramName = $constructorParameter->name; if (isset($data[$paramName])) { $params[] = $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.'); } } return $reflection->newInstanceArgs($params); } return parent::construct($visitor, $metadata, $data, $type, $context); }