Это прямо из Руководства по быстрому запуску Zend.Мой вопрос: зачем вам метод setDbTable()
, когда метод getDbTable()
назначает объект по умолчанию Zend_Db_Table
?Если вы знаете, что этот маппер использует конкретную таблицу, зачем даже предлагать возможность использования «неправильной» таблицы через setDbTable()
?Какую гибкость вы получаете, имея возможность устанавливать таблицу, если остальная часть кода (find()
, fetchAll()
и т. Д.) Относится к Guestbook
?
class Application_Model_GuestbookMapper
{
protected $_dbTable;
public function setDbTable($dbTable)
{
if (is_string($dbTable)) {
$dbTable = new $dbTable();
}
if (!$dbTable instanceof Zend_Db_Table_Abstract) {
throw new Exception('Invalid table data gateway provided');
}
$this->_dbTable = $dbTable;
return $this;
}
public function getDbTable()
{
if (null === $this->_dbTable) {
$this->setDbTable('Application_Model_DbTable_Guestbook');
}
return $this->_dbTable;
}
... GUESTBOOK SPECIFIC CODE ...
}
class Application_Model_DbTable_Guestbook extends Zend_Db_Table_Abstract
{
protected $_name = 'guestbook_table';
}