Интерфейс и Черты не работают должным образом

Это странное поведение, свидетелем которого я был сегодня, и я удивляюсь, почему.. Я сразу перейду к делу:

Поэтому мы используем переводы a2lix с symfony и fosasticabundle

class Class
{
    use Translatable;

}

class ClassTranslation  implements \A2lix\I18nDoctrineBundle\Doctrine\Interfaces\OneLocaleInterface
{
    use Translation;

}

В этом сценарии однажды я бегу

php app/console fos:astica: заполнить

Я получаю:

[InvalidArgumentException] Параметр 'locale' не существует.

Но параметр на самом деле находится в признаке (от поставщика, который включает в себя 2 признака переводимых методов и переводимых свойств)

Вопрос в том, почему это происходит. У нас есть свойство из признака, но когда мы запускаем команду, оно не находит его.

Хорошо, теперь вот странная часть!

В этом сценарии все работает как ожидалось:

class Class
{
    use Translatable;

}

class ClassTranslation 
{
    use Translation;

}

Если я решу не реализовывать интерфейс, команда будет работать гладко, интерфейс просто заставит вас получить метод getter и setter для атрибута locale. Мне просто интересно, почему это происходит.

1 ответ

Решение

Это может относиться к https://github.com/a2lix/I18nDoctrineBundle/issues/16.

Я не думаю, что это связано с особенностями php, так как не было бы InvalidArgumentException. Возможно, код черты не выполняется, если интерфейс отсутствует, поэтому в этом случае ошибки нет. Пожалуйста, проверьте реализацию вашей черты, возможно, сделайте некоторые выходные данные отладки, чтобы увидеть, когда код выполняется и когда происходит исключение.

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