Php Zend Framework快速入门它是否包含耦合对象?
我仍在努力掌握依赖注入和松散耦合对象。查看,我注意到应用程序_Model_GuestbookMapper中有以下方法: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
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的新手,您的回答是否暗示这确实是我所怀疑的紧密耦合对象?这确实是我的主要问题,而不是其中的“为什么”部分。