我仍在尝试处理依赖注入和松散耦合的对象。查看Zend Framework Quick Start,我注意到 Application_Model_GuestbookMapper 中有以下方法:
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;
}
我的问题是:这是紧耦合的一个例子,因为 Mapper 依赖于 DbTable?如果改为使用依赖注入,控制器中会不会有这样的东西?:
$guestbookMapper = Application_Model_GuestbookMapper;
$guestbookMapper->setDbTableGuestbook(new Application_Model_DbTable_Guestbook);
如果是这样,那么为什么 Zend 推荐紧密耦合的对象?