前言
每天上班下班,让生活更充实,让自己的工作更具挑战,生活每天都要充满激情,因为我们的好奇心,因为我们的求知欲,我们的生活和工作变得那么的多彩。
验证器
这里有一个验证器的概念,就是对传参进行校验,不符合则不进行处理,用 tp5 里自带的验证器,我觉得是很必要的,前端 JavaScript 是可以校验,但是我认为后台也必须要校验一次,不能对客户端传来的参数过分相信,所以服务端也要校验一次。
而且以面向对象的姿态来创建这个验证器,所以在本系统里很容易见到一个基类,而这个基类是继承自 tp5 自带的一个类,这样方便扩展,也体现了面向对象的一个特性:继承。
<?php
class BaseValidate extends Validate
{
public function goCheck(){
//获取 当前请求信息
$request=Request::instance();
//获取 请求参数数组
$params=$request->param();
//批量验证
$result=$this->batch()->check($params);
if(!$result){
$e=new ParameterException([
'msg'=>$this->error,
]);
throw $e;
}else{
return true;
}
}
protected function isPositiveInteger($value,$rule='',$data='',$field=''){
if(is_numeric($value)&&is_int($value+0)&&($value+0)>0){
return true;
}else{
return false;
}
}
}
要点:获取参数的方式是 Request::instance(),然后批量验证,验证是通过 protected $rule 规则实现,验证 BaseValidate 里自定义规则
protected $rule=[
'id'=>'require|isPositiveInteger'
];
protected $message=[
'id'=>'id参数必须是正整数'
];
自定义异常
首先需要配置好 config.php 文件,我们创建一个 ExceptionHanler 来覆盖 tp5 自带异常机制。
修改 config.php 的第159行
// 异常处理handle类 留空使用 \think\exception\Handle
’exception_handle’ => ‘app\lib\exception\ExceptionHandler’,
然后重写 render 方法,可以自定义错误状态码,错误提示信息,以及错误的 URL 。
修改 config.php 34行,开启返回值为 JSON
// 默认输出类型
’default_return_type’ => ‘json’,
自定义异常的好处
好处就是返回值,对前端友好,提供简明扼要的信息,提供自定义错误,不提示一些系统自带的参数和报错,提供系统的安全性。
也有缺点,缺点就是,如果产生报错了,可能看不到必要的信息,不方便调试,必要的时候,还是需要调试代码的。
总结
不知道你们对 PHP 里的 “=>”这样的箭头是否适应,反正我觉得怪怪的,可能写得实在是太少了吧。不过必须要夸夸 PHP ,开发速度确实很快,还不用在线下载 JAR 包,想想都觉得舒服,给我感觉是很迅速可以实现目标的代码,整体都很轻便。
本次项目我是 SSM 框架与 Thinkphp5 框架同时写的,有很明显的对比,代码量一开始就有很大区别,PHP 里我没有写 SQL 语句,我没有写 getter 和 setter,我甚至都不用一个个挑选返回值,运用一个 protected 就能控制返回的 JSON 串里是否需要输出我想要的。
目前来讲,PHP 还是有很大优势的,至少是短期的,少迭代的项目,完全可以考虑 PHP 开发。