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

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

2回复

处理对象依赖

考虑以下课程 我想在用户对象中使用Zend\\Crypt\\Password\\Bcrypt在Zend\\Crypt\\Password\\Bcrypt上应用bcrypt,因为这会产生依赖关系,所以我想知道如何正确处理此问题,我可以考虑几种方法来完成这项工作,让我详细说明一下 方法
1回复

Zend Framework和控制器注入可解决紧密耦合

与ASP.NET MVC相似,我想在控制器及其依赖项上实现松散耦合。 我想实现以下目标: 我该怎么做呢? 我可以想象会有一个绑定函数,当某些东西需要IUserRepository时,请创建一个TGUserRepository 我已经看到Laravel完全按照我的意愿来
3回复

将接口作为参数进行松耦合是否可以

我已经看到了大多数有关依赖关系注入的示例,这些依赖关系被注入到构造函数中。 在我的情况下,我无法通过构造函数或任何DI工具注入依赖项。 因此,我有一个接口作为方法的参数。 我想知道这是否是一种不好的方法,以及与构造函数注入相比有什么缺点。
13回复

您最常使用哪种松散耦合模式? [关闭]

最近我看到很多关于如何构建松耦合应用程序的博客文章。 在创建松散耦合的应用程序时,您最常使用哪些模式? 依赖注入? 控制倒置?
1回复

与zend框架集成

我们在工作场所中使用ZendFramework制作Web应用程序。 没关系,但是它缺少一些最佳的现代实践(例如依赖注入和控制反转,aop等)。 几个月以来,我一直(独自)使用Ding框架作为DI和AOP的容器作为测试驱动器。 我真的很喜欢,所以我想把它带入我们的项目中。 但是如何
1回复

如何在松耦合应用程序中从ViewModel创建窗口? WPF

我有三个项目-“ Bootstrapper”,“ ApplicationView”和“ Presentation”。 项目“ Bootstrapper”具有app.xaml.cs文件,该文件运行MainWindow 项目“ ApplicationView”仅具有必需的Windo
3回复

依赖注入:基于接口和类的松耦合机制之间的区别?

假设我有2种配置。 第一: 第二个: 使用两种不同的松耦合机制(基于接口和基于类)的这两种配置之间有什么区别? 为什么需要在类上使用接口?
10回复

如何理解松散耦合应用程序中的大局?

我们一直在使用松散耦合和依赖注入开发代码。 许多“服务”样式类都有一个构造函数和一个实现接口的方法。 每个单独的课程都很容易理解。 但是,由于耦合的松散性,查看一个类不会告诉你它周围的类或它在更大的图片中的位置。 使用Eclipse跳转到协作者并不容易,因为你必须通过接口。
6回复

除了TDD之外,松耦合代码还有其他好处吗?

当我在做TDD时,它迫使我采用依赖注入原则,最后我得到松散耦合的代码。 有人告诉我,理解松散耦合代码的应用程序更难。 你能告诉我松耦合代码的优缺点吗?
1回复

具体类型应该如何以松散耦合的方式返回接口的实例?

我有一个IDirectory接口和一个实现它的Directory类。 我需要创建一个IDirectoryEnumerator ,它只有一个看起来像这样的方法: 所以我创建了一个DirectoryEnumerator类,但是我不确定在GetDirectories()返回哪个IDirec