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

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

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

2011-02-13 18:37:49

5 Answers

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

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

2011-02-13 21:10:35

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

例如:

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

);

2011-02-13 21:56:18
  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*/
}

2011-02-13 23:30:16

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

  
<?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>
2011-02-14 00:58:01

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

2011-02-14 03:16:01
您不能回答该问题或者回答已经关闭!

相关文章推荐

  • C#中using指令的几种用法

    using + 命名空间名字,这样可以在程序中直接用命令空间中的类型,而不必指定类型的详细命名空间,类似于Java的import,这个功能也是最常用的,几乎每个cs的程序都会用到

  • C#实例解析适配器设计模式

    将一个类的接口变成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够一起工作

  • 使用托管C++粘合C#和C++代码(二)

    本文实现一下C++代码调用C#代码的过程。我构造一个简单并且直观的例子:通过C++ UI 触发C# UI.

  • C#开发高性能Log Help类设计开发

    项目中要在操作数据库的异常处理中加入写Log日志,对于商业上有要求,写log时对其它操作尽可能影响小,不能因为加入log导致耗时太多

  • Async和Await使异步编程更简单

    C#5.0中async和await两个关键字,这两个关键字简化了异步编程,之所以简化了,还是因为编译器给我们做了更多的工作

  • C#开发中的反射机制

    反射的定义:审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等

  • C#运行时相互关系

    C#运行时相互关系,包括运行时类型、对象、线程栈和托管堆之间的相互关系,静态方法、实例方法和虚方法的区别等等

  • C#协变和逆变

    “协变”是指能够使用与原始指定的派生类型相比,派生程度更大的类型,“逆变”则是指能够使用派生程度更小的类型

  • C#基础概念之延迟加载

    延迟加载(lazy load)是Hibernate3关联关系对象默认的加载方式,延迟加载机制是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作

  • C#中的索引器的简单理解和用法

    C#中的类成员可以是任意类型,包括数组和集合。当一个类包含了数组和集合成员时,索引器将大大简化对数组或集合成员的存取操作

  • 使用托管C++粘合C#和C++代码(一)

    C#在xml读写,数据库操纵,界面构造等很多方面性能卓越;C++的效率高,是底层开发的必备武器

  • 深入C# 序列化(Serialize)、反序列化(Deserialize)

    C#中的序列化和反序列化,序列化是.NET运行时环境用来支持用户定义类型的流化的机制