class Your_Db_Table_Row extends Zend_Db_Table_Row_Abstract
{
}
class Your_Db_Table extends Zend_Db_Table_Abstract
{
protected $_rowClass = "Your_Db_Table_Row";
}
или
new Your_Db_Table(array("rowClass" => "Your_Db_Table_Row");
Таким образом, всякий раз, когда вы получаете набор строк из своего подкласса таблицы, включенные в него строки будут вашим пользовательским классом.
Редактировать
Чтобы получить пользовательскую строку, основанную на значении, я бы сказал, что вместо этого следует расширить класс Zend_Db_Table_Rowset_Abstract
и переопределить этот метод:
getRow(int $position, [bool $seek = false])
Вам также необходимо переопределить метод current
и, возможно, некоторые другие реализации SeekableIterator
, которые фактически создают класс строк на основе свойства _rowClass
. Вы можете установить _rowClass
до вызова current
в зависимости от типа строки ваших данных.
Вы можете создать конкретный класс в current и вернуть его на основе параметра type.
Хотели ли вы использовать просто композицию? Скажем, просто передать данные в новый класс, если это тип администратора или что-то еще?