gpt4 book ai didi

php - 用于数据库对象交互的其他 PHP 类设计是什么?

转载 作者:搜寻专家 更新时间:2023-10-31 21:17:23 26 4
gpt4 key购买 nike

我有一个名为“User”的表,其中包含用户信息。我将调用我的用户类并创建一个用户对象,以便我可以获取该用户所需的任何信息。

我一直在为我的网站使用以下类和它们的混合体,但从来没有真正对它们感到满意,主要是因为我不确定其他开发人员如何处理这种情况以及是否有更好的解决方案。以下是我一直在使用的几种方法,我很好奇其他开发人员是如何做的。

想法#1

class User
{
//public user

public function __construct()
{
//get user - queries table and returns all fields in array

}

//get name function - references user array and returns name
//set name function - sets new name in array

//commit function - commits array to db (saves changes)
}

想法#2

class User
{
//user id

public function __construct(user id)
{
//set user id

}

//get name function - calls db directly and returns name
//set name function - calls db directly and sets name

//commit function - commits array to db saves changes
}

想法 #1 似乎是最有效或最少的数据库调用,但比想法 #2 更复杂且更不直接。

我更喜欢想法 #2,但我担心它的可扩展性,因为每个函数都会调用数据库。

思想

最佳答案

我建议您了解 DataMapper图案。基本思路是这样的:

假设(为了示例)您有一个处理书籍的应用程序的 MVC 结构。

  • 拥有一个模型 Library 是有意义的,它负责管理不同书籍的领域逻辑。
  • 该模型处理未知数量的 Book 实例(图书馆中的许多书)。
    每本书:
    • 对自己了如指掌(作者、出版日期、语言等)
    • 不知道它存储在哪里或数据来自哪里
    • 可以与数据库中的一个表相关,但包含来自多个表的信息
  • 然后您有一个 BookMapper 类的实例,其中 :
    • 模型在构造函数中接收(实现预定义接口(interface))
    • 知道如何(以及在​​哪里)存储 Book 对象,以及如何将数据读入其中
    • 如果存储介质改变,可以切换到不同的对象
    • 如果它与 DB 一起工作,那么它在构造函数中已经请求了一个 DB 对象(如 PDO)
    • 有方法 store( Book $book )retrieve( Book $book ) 用于保存书籍数据,或从存储中获取新信息

我就是这样做的..

关于php - 用于数据库对象交互的其他 PHP 类设计是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5823090/

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