Пилю свою обертку для Yii 1.14.
Наткнулся на вот такой момент в классе CActiveRecord
Код: Выделить всё
public function __isset($name)
{
if(isset($this->_attributes[$name]))
return true;
elseif(isset($this->getMetaData()->columns[$name]))
return false;
elseif(isset($this->_related[$name]))
return true;
elseif(isset($this->getMetaData()->relations[$name]))
return $this->getRelated($name)!==null;
else
return parent::__isset($name);
}
Для подтверждения рассмотрим метод __get() в том же CActiveRecord
Код: Выделить всё
public function __get($name)
{
if(isset($this->_attributes[$name]))
return $this->_attributes[$name];
elseif(isset($this->getMetaData()->columns[$name]))
return null;
elseif(isset($this->_related[$name]))
return $this->_related[$name];
elseif(isset($this->getMetaData()->relations[$name]))
return $this->getRelated($name);
else
return parent::__get($name);
}
Раньше часто напарывался на подобную ситуацию используя Twig, который всегда проверяет наличие параметра и выдает ошибку при отрицательном ответе метода __isset(). Решал через getAttribute().
В обертке я, конечно, переопределю метод __isset(), но прошу пояснить, баг это или некая фича.