【问题标题】:Zend Framework Quick Start does it contain coupled objects?Zend Framework Quick Start 是否包含耦合对象?
【发布时间】:2011-12-11 20:12:23
【问题描述】:

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

【问题讨论】:

    标签: php zend-framework dependency-injection loose-coupling


    【解决方案1】:

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

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


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

    【讨论】:

    • 感谢您的回答。由于我自己对 OOP 有点陌生,您的回答是否暗示这确实是我所怀疑的紧密耦合的对象?这真的是我的主要问题,而不是“为什么?”一部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 2013-09-19
    相关资源
    最近更新 更多