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
вызывается на основе типа строки ваших данных.
Вы можете создать экземпляр определенного класса в потоке и вернуть его на основе параметра типа.
Возможно, вы, возможно, просто используете композицию? Скажите, просто передайте данные новому классу, если это тип администратора или что-то еще?
Я нахожу этот вопрос интересным, но мне остается интересно, что это делает необходимым. Кажется, что модель должна абстрагировать ее, поэтому вам не нужно это делать. – Sonny