Не могу реализовать NormalizableInterface на Symfony 2.0.9 - PullRequest
0 голосов
/ 19 января 2012

Я пытаюсь реализовать Symfony \ Component \ Serializer \ Normalizer \ NormalizableInterface с использованием Symfony 2.0.9.

Я добавил реализацию следующим образом:

class MRoute implements NormalizableInterface{
...
public function normalize($object, $format = null)
{
     $points = array();
     foreach ($this->getPoints() as $point) {
         $points[] = $point->normalize();
     }
    return array(
        'id' => $this->getId(),
        'name' => $this->getName(),
        'points' => $points

    );
}

/**
 * @see
 */
function denormalize(NormalizerInterface $normalizer, $data, $format = null)
{
    if (isset($data['name']))
    {
        $this->setName($data['name']);
    }

    if (isset($data['id']))
    {
        $this->setId($data['id']);
    }
}

Но когда я пытаюсь получить доступ к веб-сервису, я получаю сообщение об ошибке, подобное этому:

Фатальная ошибка: объявление MyGIS \ GISBundle \ Entity \ MRoute :: normalize () должно быть совместимо с Symfony \ Component \ Serializer \ Normalizer \ NormalizableInterface :: normalize () в C: \ NetbeansProjects \ mroute_rest_service \ src \ MyGIS \ GISBundle \ Entity \ MRoute.php в строке 16

Я открыл Symfony \ Component \ Serializer \ Normalizer \ NormalizableInterface.php, и подписи совпадают.

Что я делаю не так?

1 Ответ

1 голос
/ 19 января 2012

Интерфейс в v2.0.9 сильно отличается от того, что вы вставили здесь: https://github.com/symfony/symfony/blob/v2.0.9/src/Symfony/Component/Serializer/Normalizer/NormalizableInterface.php

Похоже, вы реализовали интерфейс 2.1, который совершенно отличается: https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Serializer/Normalizer/NormalizableInterface.php

Если вы фактически используете 2.1 (основную ветвь), вам нужно добавить оператор use для NormalizerInterface.

use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...