isset и CActiveRecord

Уже исправленные репорты или принятые предложения
Закрыто
Yiivgeny
Сообщения: 80
Зарегистрирован: 2010.11.24, 10:39

isset и CActiveRecord

Сообщение Yiivgeny »

Здравствуйте.

Не знаю проблема это или особенность, но такое поведение кажется мне нелогичным.
Возьмем класс CActiveRecord, он реализует ArrayAccess, и насколько я понимаю (да и по исходнику это видно) что возврат $Record->property и $Record['property'] идентичен. В таком случае странно что isset($Record->property) и isset($Record['property']) дают разные результаты.

Связано это с тем что для isset($Record->property) будет вызвано CActiveRecord::__isset(), а для isset($Record['property']) вызывается уже CActiveRecord::offsetExists(), но их реализация различна. Чем обусловлен такой подход?
Аватара пользователя
Svyatov
Сообщения: 459
Зарегистрирован: 2010.08.12, 14:50
Откуда: Санкт-Петербург
Контактная информация:

Re: isset и CActiveRecord

Сообщение Svyatov »

Кстати, интересный вопрос.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: isset и CActiveRecord

Сообщение samdark »

Тест-кейс с отличиями не помешал бы…
Yiivgeny
Сообщения: 80
Зарегистрирован: 2010.11.24, 10:39

Re: isset и CActiveRecord

Сообщение Yiivgeny »

Не писал я кейс-тестов, наверное это повод начать.
Смысл простой: isset($Record['property']) возвращает false для всех пропертей которые не являются явно определенными в классе, а реализованы через магические методы. isset($Record->property) возвращает корректно, как для магических так и для реальных свойств.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: isset и CActiveRecord

Сообщение samdark »

Закрыто