Php Zend Framework快速入门它是否包含耦合对象?

Php Zend Framework快速入门它是否包含耦合对象?,php,zend-framework,dependency-injection,loose-coupling,Php,Zend Framework,Dependency Injection,Loose Coupling,我仍在努力掌握依赖注入和松散耦合对象。查看,我注意到应用程序_Model_GuestbookMapper中有以下方法: public function setDbTable($dbTable) { if (is_string($dbTable)) { $dbTable = new $dbTable(); } if (!$dbTable instanceof Zend_Db_Table_Abstract) { throw new Except

我仍在努力掌握依赖注入和松散耦合对象。查看,我注意到应用程序_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;
}
我的问题是:这是一个紧耦合的例子,因为映射器依赖于DbTable吗?如果改为使用依赖注入,控制器中会有类似的东西吗

$guestbookMapper = Application_Model_GuestbookMapper;
$guestbookMapper->setDbTableGuestbook(new Application_Model_DbTable_Guestbook);

如果是这样,那么Zend为什么推荐紧耦合对象呢?

我最好的猜测是,大多数甚至会点击快速入门指南的人充其量也可能是新手。对于新手来说,引入依赖项可能会有点困惑,添加另一种复杂性(如依赖项注入)可能有点难以接受。尤其是那些刚接触OOP的人

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



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

感谢您的回答。由于我自己是OOP的新手,您的回答是否暗示这确实是我所怀疑的紧密耦合对象?这确实是我的主要问题,而不是其中的“为什么”部分。