Я в основном использую zend_db_table с paginator, проблема в том, что он вернет zend_db_rows вместо объектов домена из моего datamapper.
Допустим,
class Content_Model_ArticleMapper {
/*
* @param Zend_Db_Select $select
* @return Zend_Paginator
*/
public function getPaginator($select = null){}
}
Я могу взломать его, переопределив метод _loadAndReturnRow в пользовательском наборе строк.
Однако это довольно уродливо, так как у меня больше нет Zend_Db_Row, когда я запрашиваю таблицу.
И потерять методы, такие как save, которые я не хочу копировать на объекте домена.
:
class Content_Model_DbTable_Rowset_Articles extends Zend_Db_Table_Rowset {
protected function _loadAndReturnRow($position)
{
if (!isset($this->_data[$position])) {
require_once 'Zend/Db/Table/Rowset/Exception.php';
throw new Zend_Db_Table_Rowset_Exception("Data for provided position does not exist");
}
// do we already have a row object for this position?
if (empty($this->_rows[$position])) {
$this->_rows[$position] = new Content_Model_Article($this->_data[$position]);
}
// return the row object
return $this->_rows[$position];
}
}
Итак, мой вопрос, как ты делаешь это красиво? :) Ты пишешь нестандартные адаптеры Paginator?