谁有责任用数据库值填充Zend_Form的选项?

时间:2013-07-13 19:42:04

标签: php zend-framework zend-form

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

1 个答案:

答案 0 :(得分:1)

让表单知道数据库的缺点是你会得到紧密耦合的组件 - Zend_Form和你上面的情况下的数据库访问层 - 而这两个组件必须没有任何共同之处。

想象一下可能出现的情况:

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

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

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