0

两者兼得有什么意义吗?我遵循了 Zend 教程,该教程告诉我创建一个用户模型,但我不能只在 DB 模型类中为用户建模吗?

谢谢

4

2 回答 2

2

它是“关注点分离”概念的一部分http://en.wikipedia.org/wiki/Separation_of_concerns

您的模型类负责业务逻辑、验证、变量操作等,而您的 db 模型类应该只处理数据库,这样如果您需要替换 db 模型,它不会对主模型产生太大影响,并且如果您替换只要将正确的参数传递给主模型,它就不会影响数据库模型。

于 2012-08-22T12:42:49.667 回答
0

是的,您可以在 Application_Model_DbTable_User(DbTable 类)中为您的用户建模,只要您需要的所有数据都在该表中,它就可以正常工作。

在某些时候,您可能会开始使用应该在一个以上表格中表示的对象。这时你会发现需要一种不同的做事方式。

一个更好的简单示例,说明映射器和域对象可能很重要:

mp3 文件。
最简单的一个音乐文件应该由至少 3 个 db 表表示:

  1. 专辑:代表歌曲来源专辑的表格
  2. 艺术家:录制歌曲的艺术家
  3. track:关于轨道本身的信息

每个艺术家可以有多个专辑,每个专辑将有一个艺术家和多个曲目,每个曲目将属于一个专辑和一个艺术家(不同的版本将是不同的曲目)。

正如您所见,即使是简单的 mp3 集合的数据库结构也会很快变得非常复杂。在大多数情况下,即使是简单的用户记录也会分布在多个表中,具体取决于持久化数据的数量和类型。

对于理解如何以及为什么实现映射器和模型的一些帮助,我发现这些资源非常有用。

构建域模型,涵盖了域模型是什么以及如何在 PHP 中构建域模型。
将映射器添加到域模型,将映射器功能添加到相同的域模型。
Survive the Deepend,一个专注于模型和测试的 Zend 框架启动器。

前两个链接是用纯 PHP 完成的,但仍然非常有用。

于 2012-08-23T10:25:06.450 回答