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:
<?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'],
];
}
11.封装基类控制器
在终端执行命令: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);
}
}