为了账号安全,请及时绑定邮箱和手机立即绑定

数据库频繁变更“状态status”字段,如何能更便捷地维护程序

数据库频繁变更“状态status”字段,如何能更便捷地维护程序

波斯汪 2019-01-04 22:12:43
实际项目中,客户经常会拍脑袋做决定要增加删除一些状态字段。举个栗子,比如发布一篇文章,最初的状态status字段只有两个,一个是“未发布”状态,一个是“已发布”状态。后来客户又让加一个“审核中”状态,再后来又让加一个“已删除”...状态一变,伴随着的数据统计、操作日志、积分计算、查询筛选等等一系列的方法都要变动,甚至更糟糕的情况是有些利用这个状态status字段做的判断也要变。所以问题就是怎样封装status字段才能做到最优?或者说其他方法在调用这个字段的时候,应该注意些什么?
查看完整描述

1 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

我也遇到过,一开始只有一两种状态,后来越来越多,每加一个状态,凡是要做状态判断的地址都要改......
后来我把 status 写成一个类, 类似下面我写的一个 demo

class Status{    public static $all_status = array(        0 => array(            'label' => '未发布',            'value' => 0,            'point' => 1,  # 分数
            'private' => true  # 只有自己能看
        ),        1 => array(            'label' => '待审核',            'value' => 1,            'point' => 2,  # 分数
            'private' => true  # 只有自己能看
        ),        2 => array(            'label' => '已发布',            'value' => 2,            'point' => 10,  # 分数
            'private' => false  # 只有自己能看
        ),
    );    public function __construct($status)
    {        $this->status = self::$all_status[$status];
    }    /** 是否可以展示 */
    public function canShow()
    {        if($this->status['private'] === false) {            return true;
        }        return false;
    }    /** 其他判断 */
    public function canDoSomething()
    {        # ...
        return true;
    }
}

$article = array(    'content' => '文章内容',    'title' => '文章标题',    'status' => 2);
$statusObj = new Status($article['status']);if($statusObj->canShow()){
    showArticle($article)
}

这样有增减status的时候可以少做一些修改,如果有比较好的方法,顺便@我一下


查看完整回答
反对 回复 2019-01-04
  • 1 回答
  • 0 关注
  • 527 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信