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


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

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

class Class
{
    use Translatable;

}

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

}

В этом сценарии, как только я запущу

Php приложение/консоль fos: elastica:заполнить

Я получаю:

[Исключение InvalidArgumentException] Параметр "локаль" не существуют.

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

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

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

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

class Class
{
    use Translatable;

}

class ClassTranslation 
{
    use Translation;

}

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

Author: Filchev, 2016-10-10

1 answers

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

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

 1
Author: P0rnflake, 2016-10-10 09:56:45