PHP的开发技巧--快捷的方式验证字段

字段的验证算是开发中占比较重的一环,每个PHP框架的字段验证方式基本一致,都各自的验证类,方法大同小异。基本原则大概就是一张表对应一个模型对应一个验证类。每个字段都设置相应的规则和提示信息,如果有场景设置的话,单独给每个场景单独设置一个方法,存储该方法对应的字段。最后统一用一个方法作为验证入口,最后接管异常,有异常直接抛出返回,可以省去很多if语句判断。

  1. 验证类,字段和提示
 /**
     * 验证规则
     *
     * @var array
     */
    protected $rule = [

        'division_id' => 'require',
        'getMode' => 'require',
        'level_name' => 'require',
        'level_min_vote' => 'require',
        'level_max_vote' => 'require',
        'level_type' => 'require'
    ];
    //验证提示信息
    protected $message = [

        'division_id.require' => '赛区ID不能为空',
        'getMode.require' => 'getMode参数不能为空',
        'level_name.require' => '等级名称不能为空',
        'level_min_vote.require' => '等级最小票数不能为空',
        'level_max_vote.require' => '等级最大票数不能为空',
        'level_type.require' => '等级类型不能为空',
    ];

     2.为每个场景设置独立的验证。


    // save 验证场景定义
    public function sceneSave()
    {
        return $this->only(['level_name', 'level_min_vote', 'level_max_vote', 'level_type', 'division_id']);
    }

    // edit 验证场景定义
    public function sceneEdit()
    {
        return $this->only(['level_name', 'level_min_vote', 'level_max_vote', 'level_type']);
    }

    // index 验证场景定义
    public function sceneIndex()
    {
        return $this->only(['division_id','getMode']);
    }

3.设置验证的统一入口,方便管理和扩展

 public function checkData(Request $request, $scene = 'index')
    {
        $result = $this->scene($scene)->check($request->param());
        if (!$result) {
            throw  new ParameterException($this->getError());
        }
        return true;
    }

该场景验证可以单独再根据验证的场景,验证一些复杂的字段,字段验证失败之后,直接抛出异常,最后由异常类接收直接抛出异常,可减少大量的if语句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值