两者都有意义吗?我按照Zend教程告诉我创建用户模型,但是我不能只在DB模型类中为用户建模?
由于
答案 0 :(得分:2)
这是“关注点分离”http://en.wikipedia.org/wiki/Separation_of_concerns
概念的一部分您的模型类负责业务逻辑,验证,变量操作等,您的db模型类应该只处理数据库处理,这样如果您需要替换db模型,它不会影响主模型,并且如果替换主模型,只要将正确的参数传递给它,它就不会影响db模型。
答案 1 :(得分:0)
是的,您可以在Application_Model_DbTable_User(DbTable类)中为您的用户建模,只要您需要的所有数据都在该表中,它就能正常工作。
在某些时候,您可能会开始处理应该在多个表中表示的对象。这时您将发现需要采用不同的方式来做事。
映射器和域对象可能重要的一个更好的简单示例:
mp3文件。
最简单的是,单个音乐文件应该至少由3个db表表示:
每个 艺术家 可以有多个 相册 ,每个 相册 将有一个 艺术家 ,并且会有多个 曲目 ,每个 曲目 将属于一个 相册 和一个 艺术家 (不同版本将有所不同轨道)。
正如您所看到的,即使是简单的mp3集合的数据库结构也会变得非常复杂。在大多数情况下,即使是简单的用户记录也会分布在多个表中,具体取决于持久存储的数据量和数据类型。
为了帮助理解如何以及为什么实现映射器和模型,我发现这些资源非常有用。
Building a Domain Model,涵盖了域模型以及如何在PHP中构建域模型 Adding Mappers to a Domain Model,将mapper函数添加到同一域模型中 Survive the Deepend,一个专注于模型和测试的Zend Framework入门者。
前两个链接是用普通的PHP完成的,但仍然非常有帮助。