gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-30 20:58:20 25 4
gpt4 key购买 nike

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

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

所以,问题的症结所在 - 我正在努力做出的决定是将那些任意 SQL 语句放置在何处以处理我的不同对象之间的关系。

例如,我有两个对象 - 用户和属性。在这种关系中,用户是属性(property)的所有者,这些属性(property)可能包含将要出租的房间。在我的用户对象模型 (MVC) 中,我有“插入”、“删除”、“更新”、“getUser”、“userExists”等方法。我的属性模型中存在类似的方法。

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

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

我是这些论坛的新手,事实上,在我三年的开发过程中,我从未在论坛上发过帖子 - 只是阅读它们所以如果您希望我发布其他内容以供引用或让它更清晰。

谢谢

最佳答案

哇,没有冒犯,但你弄得一团糟。 MVC 没有真假之分,只有 MVC 是一种架构模式,与数据库无关。 php 有足够好的 mvc 框架,您可以在其中进行大量控制。

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

重要为业务概念建模忽略数据库关注点。当您必须保存/加载内容时,请担心数据库。

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

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

也可能是this post将帮助您更好地理解 MVC 的 M。

关于具有高级数据库结构的 PHP 和真正的 MVC 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13217782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com