Сериализатор 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(). Наверное, поэтому он не называется.

Другие вопросы по тегам