1.安装中文插件(可安装可不安装)
2.安装主题(可安装可不安装)
3.安装和php相关的插件
4.打开文件夹
5.路由操作
查看项目中的route路由
浏览器中访问think
隐藏index.php入口文件
访问ThinkPHP5.1开发手册,复制apache下面的那段话。
修改伪静态配置
复制这段话
index.php入口文件隐藏成功
6.修改配置文件
修改app.php
数据库配置database.php
7.删除项目部分内容
删除index,因为一般自己写
删除route中的路由
8 版本控制
以后版本升级直接将v1目录复制到v2中,在v2中更改。
9 全局异常类封装
如果访问错误会出现如下页面(太丑了,要改进)
因为我们删除了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'];}
}
10 全局验证层封装
终端使用命令创建验证类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:
<?phpnamespace 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'],];
}
11.封装基类控制器
在终端执行命令:php think make:controller BaseController
然后在BaseController.php中写
<?phpnamespace 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);}
}