Laravel8 快速入门教程十三 - 数据验证层提取

76 阅读2分钟

本文由 简悦 SimpRead 转码, 原文地址 juejin.cn

「这是我参与 11 月更文挑战的第 7 天,活动详情查看:2021 最后一次更文挑战

背景

  1. 项目用 Thinkphp5.1 开发完成,对于各种关系模型的查询 Tp 处理起来还是比较吃力的。
  2. 作为努力奔跑的程序员,下一个项目我们决定用 Lavarel 进行开发。
  3. 因为掘金粑粑有奖励,所以把部分 gitee 上的私有的部分学习笔记整理一下。

说明

Laravel 属于中大型框架,各种功能都被内置了,而且 Laravel 官方的文档看的我是云里雾里的,对于新手感觉不是很友好。所以此系列文章只适合有 PHP 基础。想快速入门搞开发的

正文

上一篇文章我们介绍了验证层封装的必要性,这里我们继续进行讲解。

重要理论

Animal+int age+String gender+isMammal()+mate()Duck+String beakColor+swim()+quack()Fish-int sizeInFeet-canEat()

面向对象中有继承的特点。父类中定义的属性跟方法如果被子类继承则可以直接使用。如果父类中使用一个 protected 修饰的空属性,此时子类继承了当前父类,则在子类中修改当前属性,父类中也会获取到修改的值,并在父类公共的方法中使用。这是面向对象最基础的理论,下面会有相关的代码演示,实在不懂则可以百度相关理论

开始写代码

创建文件 app\Http\Validate\BaseValidate.php

<?php
/**
 * [基本的模型类] 
 * Author Liiy. 
 * Date 2021/11/13. 
 * Time 19:40. 
 */
namespace App\Http\Validate;

use Exception;
use Illuminate\Support\Facades\Validator;

class BaseValidate{

    protected $rules=[];  //验证规则
    protected $message=[]; //验证信息

        //基础校验器取数据方法
        public function getDateByRules($data){
            $validate = Validator::make($data,$this->rules,$this->message);
            if($validate->fails()){
                throw new Exception($validate->errors()->first());
            }
    
            $res_arr = [];
            $keys_arr = array_keys($this->rules);
            foreach ($keys_arr as $key => $value) {
                if(isset($data[$value])){
                    $res_arr[$value] = $data[$value];
                }
            }
    
            return $res_arr;
        }
}
复制代码

上面定义两个属性,一个方法。方法是用来根据验证器获取验证通过的合法数据。方法需要数据,但是目前还不知道要处理的数据。所以两个属性是空的,并且用 protected 修饰,代表数据会来自子类中。