Hy,
У меня короткий вопрос о странном сообщении об ошибке, которое я получаю в моем проекте Symfony 2.
У меня есть класс сущностей User
, который извлекает свои роли через Doctrine. Это работает отлично! Но...
Я хочу, чтобы User implement EquatableInterface
, поэтому я добавил метод User::isEqualTo
. Вот тут и возникает моя ошибка. Эта строка , особенно $this->getRoles()
вызывает ошибку:
Symfony2: вызов функции-члена toArray() для не-объекта
Но то же самое использование функции toArray
внутри User::getRoles()
отлично работает в остальной части проекта. Так что я не понимаю, что здесь не так.
Может ли кто-нибудь помочь мне с этим? Любая помощь приветствуется!
Обновление 1
Глядя на журналы и используя вашу текущую справку, вот некоторые идеи:
$this
ingetRoles
всегда возвращает пользовательский класс сущности, так что ничего особенного, но- После каждого
isEqualTo
вызова$this->roles
возвращаетnull
, после этого нет.
Обновление 2
Вот мои дальнейшие выводы:
- Я добавил Константина
is_null
check, но это не решает реальной проблемы. - Как я мог видеть в журналах при входе в систему, вызывается
refreshUser
, и все идеально. Роли найдены. После того, как RefreshUserisEqualTo
запускается и внезапно$this->roles
становится нулевым, аget_class($this->roles)
возвращает пользовательский класс сущности (?!?!?) по сравнению сDoctrine\\ORM\\PersistentCollection
.
Когда я добавляю роли в пользовательские (не) сериализованные методы, внутри этого метода isEqualTo
кажется, что все в порядке. Он, наконец, захватывает роли, и я могу добавить к этому свою логику. Отлично! Но впоследствии Symfony выдает такие ошибки, как this или что. На мой взгляд, это как-то связано с сериализацией.
После некоторых чтений я добавил сериализацию в сущность роли, потому что это кажется стандартным способом. Сериализация пользователя и ролей сама по себе, а не (не)сериализация ролей внутри пользовательского класса. Но как только я удаляю роли из пользовательских методов сериализации, снова и снова возникает старая проблема, связанная с тем, что $this->roles
всегда null
при запуске isEqualTo. Каждый раз до и после все отлично, кроме вызова этого метода.
Я понятия не имею, что именно здесь происходит не так.
Есть идеи?
get_class($this)
на здесь. - person alu   schedule 12.11.2014