我正在使用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();
}
有什么想法吗?
答案 0 :(得分:0)
您应该将自定义构造函数服务别名为
jms_serializer.object_constructor:
alias: your_service_id
答案 1 :(得分:0)
也许它已经过时了,但是您的ObjectConstructor
的方法名construct
错误,而应为__construct()
。也许这就是为什么它不被调用的原因。