实际项目中,客户经常会拍脑袋做决定要增加删除一些状态字段。举个栗子,比如发布一篇文章,最初的状态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
的时候可以少做一些修改,如果有比较好的方法,顺便@我一下
添加回答
举报
0/150
提交
取消