赞
踩
查看项目中的route路由
浏览器中访问think
隐藏index.php入口文件
访问ThinkPHP5.1开发手册,复制apache下面的那段话。
修改伪静态配置
复制这段话
index.php入口文件隐藏成功
修改app.php
数据库配置database.php
删除index,因为一般自己写
删除route中的路由
以后版本升级直接将v1目录复制到v2中,在v2中更改。
如果访问错误会出现如下页面(太丑了,要改进)
因为我们删除了application下面的index,所以我们来生成一个控制器:
按Ctrl+`进入终端
输入php think make:controller index/Index
命令
把index.php里面没用的东西都删除
封装一个异常类
配置自定义异常类
查看效果:
在ExceptionHandler.php同级目录下创建BaseException.php
ExceptionHandler.php里面的代码内容:
<?php namespace app\lib\exception; use Exception; use think\exception\Handle; class ExceptionHandler extends Handle { public $code; public $msg; public $errorCode; public function render(Exception $e) { if ($e instanceof BaseException) { $this->code = $e->code; $this->msg = $e->msg; $this->errorCode = $e->errorCode; } else { // debug开启,显示默认的异常 if (config('app.app_debug')) return parent::render($e); $this->code = 500; $this->msg = '服务器异常'; $this->errorCode = '999'; } $res = [ 'msg' => $this->msg, 'errorCode' => $this->errorCode ]; return json($res, $this->code); } }
BaseException.php里的代码内容
<?php namespace app\lib\exception; use Exception; class BaseException extends Exception { public $code = 400; public $msg = '异常'; public $errorCode = 999; public function __construct($params = []) { if (!is_array($params)) return; if (array_key_exists('code', $params)) $this->code = $params['code']; if (array_key_exists('msg', $params)) $this->msg = $params['msg']; if (array_key_exists('errorCode', $params)) $this->errorCode = $params['errorCode']; } }
终端使用命令创建验证类php think make:validate ceshiValidate
在ceshiValidate.php同级下右键单击创建BaseValidate.php,如下图:
BaseValidate.php内容:
<?php namespace app\common\validate; use think\Validate; class BaseValidate extends Validate { public function goCheck($scene = false) { // 获取请求传递过来的所有参数 $params = request()->param(); // 开始验证 $check = $scene ? $this->scene($scene)->check($params) : $this->check($params); if (!$check) { TApiException($this->getError(), 10000, 400); } return true; } }
对于BaseValidate.php中使用到的TApiException方法在common.php中,如下图:
TApiException方法代码内容如下:
// 异常类输出函数
function TApiException($msg = '异常', $errorCode = 999, $code = 400)
{
throw new \app\lib\exception\BaseException(['code' => $code, 'msg' => $msg, 'errorCode' => $errorCode]);
}
其他验证层写法不与BaseValidate.php类似,如UserValidate.php的内容如下,记得继承BaseValidate:
<?php namespace app\common\validate; class UserValidate extends BaseValidate { /** * 定义验证规则 * 格式:'字段名' => ['规则1','规则2'...] * * @var array */ protected $rule = [ 'phone' => 'require|mobile', 'code' => 'require|number|length:4|isPefectCode', 'username' => 'require', 'password' => 'require|alphaDash', ]; /** * 定义错误信息 * 格式:'字段名.规则名' => '错误信息' * * @var array */ protected $message = [ 'phone.require' => '请填写手机号码', 'phone.mobile' => '手机号码不合法' ]; // 配置场景 protected $scene = [ // 发送验证码 'sendCode' => ['phone'], // 手机号登录 'phonelogin' => ['phone', 'code'], // 账号密码登录 'login' => ['username', 'password'], ]; }
在终端执行命令:php think make:controller BaseController
然后在BaseController.php中写
<?php namespace app\common\controller; use think\Controller; use think\Request; class BaseController extends Controller { // api统一返回格式 static public function showResCode($msg = '未知', $data = [], $code = 200) { $res = [ 'msg' => $msg, 'data' => $data, ]; return json($res, $code); } // api统一返回格式无数据 static public function showResCodeWithOutData($msg = '未知', $code = 200) { return self::showResCode($msg, [], $code); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。