好的,所以我考虑实现活动记录设计模式,将类映射到MySQL数据库中的一些表上。
问题是,我想要一个通用类,它将根据选择的属性(数据库中的字段)在我的表中进行混洗,执行基本的CRUD事务。
因此,我有CRUD的方法,我想根据传递给对象的属性来选择这些方法,这些属性是我使用__get和__set方法访问的。
我考虑过使用一个数组,将它的键作为表前缀,并将它的值作为另一个数组(包含每个表的属性列表)。
但我认为这太复杂了,因为我必须遍历整个数组才能选择指定的表。
你能给我指一些我可以使用的设计技巧吗?谢谢
使用预先构建的库,如Doctrine、Propel或PHPActiveRecord,这些库可以从现有的DB架构生成类文件。还可以看看http://martinfowler.com/eaaCatalog/index.html关于对象关系映射等中使用的基本模式的一些想法
如果要解决的问题是"处理表",那么这就是实现的方法。
您希望执行哪些命令?插入记录,删除记录?
创建一个表示表的实体Table、表示列的值对象Column和表示表行的Record,并根据需要进行细化。
然后你就可以使用每一张桌子了。
用法应该像一样简单
<?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);
但我只建议这才是真正的问题所在,否则您应该将业务实体表示为:用户、订单等。