1

我试图找出将代码放置在我访问数据库并填充选择元素中选项值的最佳位置。将此代码放在控制器中似乎很笨拙。让表单知道数据库的缺点是什么?

4

1 回答 1

1

让表单知道数据库的缺点是您将得到紧密耦合的组件——在上面的例子中是 Zend_Form 和你的数据库访问层——而这两个必须没有任何共同点。

想象一下可能的场景:

  • 您将数据从一个数据库移动到另一个数据库。或者您想在其顶部添加一个缓存层。您必须在整个项目中修改 db 特定调用。
  • 您决定对您的课程进行单元测试。您将需要在测试中维护数据库连接(或对其进行模拟)。
  • 您想在另一个地方使用相同的表单类,并且选择填充的选项不是来自数据库而是来自 ini 配置文件......好吧,你明白了。

因此,最好的解决方案是拥有一些特定于数据库的映射器类,它可以为您获取所需的数据。然后将此数据作为依赖项传递给表单。这样,您的表单将独立于任何外层(可读可维护、可测试)。

因此,您可以创建表单的对象,将数据源中的数据(无论它是什么)传递给控制器​​。

于 2013-07-13T23:41:05.113 回答