PHP 数据库类模式问题/建议

标签 php mysql database model design-patterns

我正在为我的数据库开发自己的类模型,我想知道你们对此有何看法。

对于我数据库中的每个表,我有 2 个类。第一个,是一个获取类(我不知道怎么调用它..),这个类有一些与数据库交互的静态方法(fetchAll、fetchById 等..)。第二类是模型本身,它包含表中一行的所有方法(插入、更新、删除、验证或对该行的任何其他处理)。

每个获取类返回模型对象,例如,如果它是一个 fetchAll,该方法将返回一个模型数组,如果它是一个 fetchById,该方法将只返回 1 个对象,因为 id 是唯一的。

我将如何使用它的示例:

$users = Users_Map::fetchAll();

foreach($users as $user)
{
    echo $user->username.'<br/>';
}

$user = new User_Model();
$user->username = 'example';
$user->insert();

$user = User_Map::fetchById(1);
$user->username = 'example2';
$user->update();

如果您有除_Map 以外的任何建议,我很乐意。 我想知道这个“模式”好不好,你怎么看,我该如何改进,我错了吗?我应该只使用 1 个类,在 _Model 中使用静态和非静态方法吗?

非常感谢您的帮助/建议!

最佳答案

从您的描述来看,这听起来很合理,但真正的考验会在您开始认真扩展它时到来。

我通常构建三个类的核心:

  1. 数据库处理程序
  2. 通用对象处理程序
  3. 一个通用的集合处理程序

每个表都有一个派生自对象类的对象类来表示表中的一行,还有一个派生自代表部分或全部表的集合的类,并将根据请求返回单个对象。还有一个静态“注册”函数,用于为每个类设置一次所有必要的信息(表名、有效字段等)。

有时,集合类也是另一个表的对象。我很久以前写的通用对象和注册机制可以无缝地处理这个问题。

关于PHP 数据库类模式问题/建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3002608/

相关文章:

php - 从 mysql 表中选择并打印 2 个单独的行

ajax 修改文件中的 JavaScript 在主页中不起作用

Mysql 查询第一次和第二次执行给出不同的计数

php - 我应该使用某种数据库吗?

mysql - 除了 API 端点之外,是否还有其他方法可以进入后端?

php - 什么?解析错误: syntax error, unexpected T_STRING in/file/path

php - POST 到不带 "form"的 PayPal 示例 URL

mysql - 用其他字段的COUNT更新一列是SQL吗?

SQL COUNT 返回使用特定属性的项目数

android - SQLite : how to organize my data base