我正在为我的数据库开发自己的类模型,我想知道你们对此有何看法。
对于我数据库中的每个表,我有 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
中使用静态和非静态方法吗?
非常感谢您的帮助/建议!
最佳答案
从您的描述来看,这听起来很合理,但真正的考验会在您开始认真扩展它时到来。
我通常构建三个类的核心:
- 数据库处理程序
- 通用对象处理程序
- 一个通用的集合处理程序
每个表都有一个派生自对象类的对象类来表示表中的一行,还有一个派生自代表部分或全部表的集合的类,并将根据请求返回单个对象。还有一个静态“注册”函数,用于为每个类设置一次所有必要的信息(表名、有效字段等)。
有时,集合类也是另一个表的对象。我很久以前写的通用对象和注册机制可以无缝地处理这个问题。
关于PHP 数据库类模式问题/建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3002608/