2

我正忙于开发基于纯 PHP MVC 结构的酒店预订系统的第一阶段。我尝试熟悉 Cake 和 CodeIgniter 之类的库,但我对自己的控制力如此之小并不满意。

所以我选择构建自己的迷你框架,到目前为止对我来说效果很好。现在,我使用的数据库结构相当复杂。有很多多对多关系和一对多关系。我选择不在数据库本身中强制执行任何引用完整性,因为我认为应该在编程级别完成以避免以后出现挫折 - 事情并不总是按计划进行,我发现以编程方式弄清楚发生了什么比在带有较少解释性错误消息的 SQL 数据库中

所以,对于关键 - 我正在努力做出的决定是在哪里放置这些任意 SQL 语句来处理我的不同对象之间的关系。

因此,例如,我有两个对象 - 用户和属性。在这种关系中,用户是可能容纳将出租的房间的财产的所有者。在我的用户对象模型 (MVC) 中,我有诸如“插入”、“删除”、“更新”、“获取用户”、“用户Exists”之类的方法。我的属性模型中存在类似的方法。

每个模型都扩展了我创建的数据库类,以利用与数据库的连接。

在这个结构中,我在哪里以及如何管理这些对象之间的关系?关系是 Properties_has_Users -> 它是多对多的。我在哪里为关系创建插入、更新和删除方法?在它自己的名为“Properties_Users_Relationships”的对象中?在其中一个对象的控制器中?

我是这些论坛的新手,事实上在我三年的发展过程中,我从未在论坛上发过帖子 - 只是阅读它们,所以如果您希望我发布其他内容以供参考或使其更清晰,请告诉我.

谢谢

4

1 回答 1

0

哇,没有冒犯,但你搞砸了。没有真或假的 MVC,只有 MVC,它是一种架构模式,与数据库无关。并且 php 有足够好的 mvc 框架,在那里你有足够的控制权。

无论如何,您应该有一个持久层来处理所有存储,包括查询、表关系等。业务层将具有对酒店预订过程进行建模的对象。业务对象不知道数据库。最好有一个 DAO 或一个存储库来实际执行查询并恢复业务对象。

忽略数据库问题对业务概念进行建模很重要。当您必须保存/加载内容时,请担心数据库。

仅用于查询,您可以拥有一个专门的 Dao/repository,它将隐藏 wueris 并直接返回视图的视图模型。

要理解的重要事情之一是持久性模型(您保存在数据库中的内容)与业务模型(业务概念和流程)不同。一个是简单的数据,另一个是行为。M 是多态的,它可以表示数据库结构或视图数据或业务行为。

另外,也许这篇文章会帮助你更好地理解 MVC。

于 2012-11-04T11:02:16.300 回答