如何设计一个灵活的数据库使接口API代码改动较少

需要设计一个数据库,就是会有很多活的条件,这些条件都会封装成方法,请问怎么设计才能以后不会频繁的动代码
类似于需要满足这些条件

1
1. 申请人账号注册周期在半年以上!
2. 申请人必须加入公社!
3. 申请人(XX)被关注度100人以上,(需是真实有效)!
4. 申请人必须开通荣誉室并且达到一定丰满度(待定)
5. 申请人必须填写完整个人资料!
6. 申请人必须是绑定手机用户!

就是这些也是可能变的,然后把方法都也写进一个库中,方便调用

Geo5
Geo5
463
编辑于2012-03-14
评论 (1)链接2012-03-13 
  • 0 支持
    你把问题想的太复杂了吧,不想改代码,并且要符合你的这些可变的条件,首选肯定是把一些条件入库,最好是写成配置文件的参数 – 花茶 2012-03-14

创建一个config.user.php
<?php
// 申请人账号注册周期在半年以上
$config['user']['register_time'] = '';
// 申请人必须加入公社
$config['user']['add_gongshe'] = '';
/.........
?>

像上面这样的配置数据,你想添加多少就添加多少。然后再你的入库文件里include该文件后,把变量$config设置成global就可以了。然后在你系统任何地方只要调用$config['user']['register_time']就可以了,如需要改变数据的值,只修改配置文件即可!

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (0)链接 • 2012-03-13

像这样的需求,一般都是直接以PHP数组的形式写成配置文件,然后把对这个配置文件封装一个调用接口,可以在任何地方调用,当需要判断用户信息时,只要获取这个USER的配置文件信息,再对其进行验证即可,由于它是一个数组,所以在任何时候都可以添加更多的条件。

例如:

$config['user_cond'] = array(
'is_mobile' => 'true', //必须绑定手机
'register_time' => '180', //注册时间
......

);

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (0)链接 • 2012-03-14
  1. 申请人账号注册周期在半年以上!
    1. 申请人必须加入公社!
    2. 申请人(XX)被关注度100人以上,(需是真实有效)!
    3. 申请人必须开通荣誉室并且达到一定丰满度(待定)
    4. 申请人必须填写完整个人资料!
    5. 申请人必须是绑定手机用户!

以上这些信息都在用户表中可以做冗余,以上这些条件基本都是0,1值

比较通用的调用写法,不过要注意下安全
//表字段名,比较运算符,阀值
$filterArray = array(
'uid'=array('=',123456),//申请人账号ID=123456
'registtime'=array('>',180 * 24 * 3600),//申请人账号注册周期在半年以上!
'isincommune'=array('=',1),//申请人必须加入公社
/**@todo*/
}

function filter($filterArray){
/**@todo*/
}

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (0)链接 • 2012-03-14

可以考虑把查询条件写成配制文件的形式,增加或修改条件只需要修改这个配制文件即可,程序在初始化时读取条件后进行解析。配制文件可以类似这种:

  
<?xml version="1.0"?>
<!-- logic 1:大于 0:等于 -1小于 -->
<configuration>
<condition>
<field>RegDates</field>
<value>60</value>
<logic>1</logic>
</condition>
<condition>
<field>focus</field>
<value>100</value>
<logic>1</logic>
</condition>
...
</configuration>
该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (0)链接 • 2012-03-13

我觉得只要把那些条件作为全局变量设置好,把功能划分清楚,就可以很好地减少代码的修改了。

该答案已被锁定,无法对其进行评论,编辑及投票。
()
评论 (0)链接 • 2012-03-13
德问是一个专业的编程问答社区,请 登录注册 后再提交答案