PHP和真正的MVC结构,具有高级数据库结构

时间:2012-11-04 10:32:11

标签: php database model-view-controller

我正忙着开发基于纯PHP MVC结构的酒店预订系统的第一阶段。我试着熟悉像Cake和CodeIgniter这样的库,但是我对自己控制得不多感到不自在。

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

所以,至关重要 - 我正在努力做出的决定是将这些任意SQL语句与我的不同对象之间的关系放在哪里。

因此,例如,我有两个对象 - 用户和属性。在这种关系中,用户是可能容纳将要出租的房间的房产的所有者。在我的用户对象模型(MVC)中,我有'insert','delete','update','getUser','userExists'等方法。我的属性模型中存在类似的方法。

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

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

我是这些论坛的新手,实际上在我开发的三年里,我从未在论坛上发帖 - 只需阅读它们,请告诉我是否还有其他您希望我发布的内容或参考或让它更清楚。

谢谢

1 个答案:

答案 0 :(得分:0)

哇,没有冒犯,但是你弄得一团糟。没有真假MVC,只有MVC是一种架构模式,与数据库无关。 php有足够好的mvc框架,你可以控制很多。

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

重要来模拟忽略数据库关注点的业务概念。当你必须保存/加载东西时担心数据库。

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

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

也许this post可以帮助您更好地理解MVC的M。