В кратком руководстве по Zend Framework было изменение от моделей, которые расширяют Zend_Db_Table_Abstract
на шаблон шлюза табличных данных.
Лично у меня не было большого опыта работы с этим шаблоном, и я продолжаю слышать, что его, скорее всего, следует использовать вместо старого способа.
Краткий пример из краткого руководства:
Старый способ:
class Default_Model_Guestbook extends Zend_Db_Table_Abstract
{
protected $_name = 'tablename';
// do stuff
}
Новый способ:
// The actual model
class Default_Model_Guestbook
{
protected $_comment;
protected $_created;
protected $_poster;
// list continues with all columns
}
// Dbtable for this model
class Default_Model_DbTable_Guestbook extends Zend_Db_Table_Abstract
{
/** Table name */
protected $_name = 'guestbook';
}
// Mapper
class Default_Model_GuestbookMapper
{
public function save($model);
public function find($id, $model);
public function fetchAll();
}
Из-за отсутствия опыта работы с этим стилем программирования мне трудно понять реальные преимущества этого последнего способа; Я понимаю, что этот метод максимально отделяет базу данных от реальной логики, что теоретически должно упростить переход на другую платформу базы данных. Однако я действительно не вижу этого ни в одном проекте, над которым я работаю.
Почти нет сомнений в том, что я что-то упускаю из виду, поэтому я хотел бы услышать ваш совет.
Вопрос:
Не могли бы вы объяснить мне, почему (или если) последнее лучше?
Следует ли мне перейти со старого способа на новый или все еще есть веские причины для использования моделей, представляющих таблицы базы данных?
Заранее спасибо.