Jms Serializer不调用构造函数

时间:2017-11-10 17:12:02

标签: php symfony symfony-2.8 jmsserializerbundle jms-serializer

我正在使用Symfony 2.8和JMS Serializer,当我使用反序列化器方法时,我的实体类的构造函数不会被调用。看我的代码:

我的service.yml

jms_serializer.unserialize_object_constructor:
    class: AppBundle\Serializer\ObjectConstructor

我的ObjectConstructor

<?php

namespace AppBundle\Serializer;

use JMS\Serializer\VisitorInterface;
use JMS\Serializer\Metadata\ClassMetadata;
use JMS\Serializer\DeserializationContext;
use JMS\Serializer\Construction\ObjectConstructorInterface;

class ObjectConstructor implements ObjectConstructorInterface
{

    /**
     * {@inheritdoc}
     */
    public function construct(VisitorInterface $visitor, ClassMetadata $metadata, $data, array $type, DeserializationContext $context ) {

        $className = $metadata->name;

        return new $className();
    }
}

和我班级的构造函数:

public function __construct() {

    $this->dateTime = new \DateTime();
}

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

您应该将自定义构造函数服务别名为

jms_serializer.object_constructor:
    alias: your_service_id

答案 1 :(得分:0)

也许它已经过时了,但是您的ObjectConstructor的方法名construct错误,而应为__construct()。也许这就是为什么它不被调用的原因。