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

发布于 2022-09-11 16:14:30 字数 264 浏览 33 评论 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

等风来 2022-09-18 16:14:30

我也遇到过,一开始只有一两种状态,后来越来越多,每加一个状态,凡是要做状态判断的地址都要改......
后来我把 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的时候可以少做一些修改,如果有比较好的方法,顺便@我一下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文