Сериализатор Jms не вызывает конструктор
Я использую Symfony 2.8 с JMS Serializer, и когда я использую метод deserializer, конструктор моего класса сущности не вызывается. Смотрите мой код:
мой сервис
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();
}
Любая идея?
1 ответ
Вы должны использовать псевдоним вашего сервиса конструктора
jms_serializer.object_constructor:
alias: your_service_id
Может и устарело, но твой
ObjectConstructor
имеет неправильное имя метода
construct
пока это должно быть
__construct()
. Наверное, поэтому он не называется.