Если вы хотите добавить временные данные в объект строки таким образом, что он фактически не спасется со строкой, не использовать атрибуты, используйте метод установки в классе строки:
protected $customData = null;
public function getCustomData()
{
return $this->customData;
}
public function setCustomData($data)
{
$this->customData = $data;
return $this;
}
Тогда просто позвонить, что из вашего кода:
$row->setCustomData($data);
с другой стороны, если вы хотите сделать это для многих классов, вы можете переопределить метод __set() из Zend_Db_Table_Row_Abstract таким образом, что вместо того, чтобы выбросить исключение, он сохраняет значение в отдельная площадь:
protected $extraFields = [];
function __set($columnName, $value)
{
$columnName = $this->_transformColumn($columnName);
if (array_key_exists($columnName, $this->_data)) {
$this->_data[$columnName] = $value;
$this->_modifiedFields[$columnName] = true;
} else {
$this->extraFields[$columnName] = $value;
}
}
public function __get($columnName)
{
$columnName = $this->_transformColumn($columnName);
if (array_key_exists($columnName, $this->_data)) {
return $this->_data[$columnName];
} else {
return $this->extraFields[$columnName];
}
}