1

我仍在尝试处理依赖注入和松散耦合的对象。查看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 推荐紧密耦合的对象?

4

1 回答 1

0

我最好的猜测是,大多数甚至会点击快速入门指南的人可能充其量只是新手。引入数据库抽象层可能会让新手感到有些困惑,添加另一个复杂性(例如依赖注入)可能有点难以接受。特别是对于那些刚接触 OOP 的人。

此外,使用Zend_Db_Table[需要引用] Zend Framework 社区中最常见的 DAL 类型。也就是说,可以安全地假设(对他们来说)大多数人几乎都希望DbTable 用于快速入门示例,因为这是每个人都想知道的。


然而,这并不意味着 Zend 框架是紧密耦合的。恰恰相反,他们吹嘘耦合非常松散。有人说这是旁观者的看法。有一些耦合,但它仍然是一个很棒的框架。

于 2011-12-11T22:05:00.180 回答