本文由 简悦 SimpRead 转码, 原文地址 juejin.cn
「这是我参与 11 月更文挑战的第 7 天,活动详情查看:2021 最后一次更文挑战」
背景
- 项目用 Thinkphp5.1 开发完成,对于各种关系模型的查询 Tp 处理起来还是比较吃力的。
- 作为努力奔跑的程序员,下一个项目我们决定用 Lavarel 进行开发。
- 因为掘金粑粑有奖励,所以把部分 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 修饰,代表数据会来自子类中。