我仍在尝试处理依赖项注入和松散耦合的对象。 在查看Zend Framework快速入门时 ,我注意到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为什么推荐紧密耦合的对象?

===============>>#1 票数:0 已采纳

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

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


但是,这并不意味着Zend Framework是紧密耦合的。 恰恰相反,他们吹嘘自己的耦合非常松散。 有人说这是情人眼中的。有一些耦合,但它仍然是一个很好的框架。

  ask by Dan translate from so

未解决问题?本站智能推荐: