用于映射多个MySQL表的PHP设计模式

用于映射多个MySQL表的PHP设计模式,php,mysql,oop,design-patterns,Php,Mysql,Oop,Design Patterns,好的,所以我考虑实现活动记录设计模式,将一个类映射到MySQL数据库中的一些表上 问题是我需要一个泛型类,它将根据选择的属性(我数据库中的字段)在我的表中移动,执行基本的CRUD事务 所以我有CRUD的方法,我想根据传递给对象的属性来选择这些方法,这些属性是我使用_get和_set方法访问的 我考虑使用一个数组,将它的键作为表前缀,它的值作为另一个数组,该数组包含每个表的属性列表 但我认为这太复杂了,因为我必须在整个数组中洗牌才能选择指定的表 你能给我指一些我能用的设计技巧吗? 谢谢 使用预先构

好的,所以我考虑实现活动记录设计模式,将一个类映射到MySQL数据库中的一些表上

问题是我需要一个泛型类,它将根据选择的属性(我数据库中的字段)在我的表中移动,执行基本的CRUD事务

所以我有CRUD的方法,我想根据传递给对象的属性来选择这些方法,这些属性是我使用_get和_set方法访问的

我考虑使用一个数组,将它的键作为表前缀,它的值作为另一个数组,该数组包含每个表的属性列表

但我认为这太复杂了,因为我必须在整个数组中洗牌才能选择指定的表

你能给我指一些我能用的设计技巧吗?
谢谢

使用预先构建的库,如Doctrine、Propel或PHPActiveRecord,这些库可以从现有的DB模式生成类文件。还可以了解一些关于对象关系映射中使用的基本模式的想法,等等。

如果要解决的问题是“处理表”,那么这就是实现的方法

您希望执行哪些命令?插入记录,删除记录

创建表示表的实体,表示列的值对象,表示表行的记录,以及所需的细粒度

然后你就可以使用每一张桌子了

使用方法应尽可能简单:

<?php 
$usersTable = new Table($connection, 'users');

// sample search
$userRow = new Record('user');
$usersTable->find(array('id' => 1), $userRow);

// sample insert
$row = new Record('users', array('id' => 1, 'name' => 'jose'));
$result = $usersTable->insert($row);

我认为您的类试图做的太多了(封装几个表听起来很不灵活)。搜索数据映射器、表网关和dao。