Lemon\RestBundle\Serializer\LazyJsonDeserializationVisitor::visitProperty PHP Method

visitProperty() public method

public visitProperty ( JMS\Serializer\Metadata\PropertyMetadata $metadata, $data, JMS\Serializer\Context $context )
$metadata JMS\Serializer\Metadata\PropertyMetadata
$context JMS\Serializer\Context
    public function visitProperty(PropertyMetadata $metadata, $data, Context $context)
    {
        $name = $this->namingStrategy->translateName($metadata);
        $types = array('NULL', 'string', 'integer', 'boolean', 'double', 'float', 'array', 'ArrayCollection', 'DateTime');
        if (isset($data[$name]) && is_scalar($data[$name]) && !in_array($metadata->type['name'], $types)) {
            /** @var DeserializationContext $context */
            $context->useDoctrineConstructor();
            $data[$name] = array('id' => $data[$name]);
        }
        if (null === $data || is_array($data) && !array_key_exists($name, $data)) {
            return;
        }
        if (!$metadata->type) {
            throw new RuntimeException(sprintf('You must define a type for %s::$%s.', $metadata->reflection->class, $metadata->name));
        }
        $v = $data[$name] !== null ? $this->getNavigator()->accept($data[$name], $metadata->type, $context) : null;
        if (null === $metadata->setter) {
            $metadata->reflection->setValue($this->getCurrentObject(), $v);
            return;
        }
        $this->getCurrentObject()->{$metadata->setter}($v);
    }
LazyJsonDeserializationVisitor