Vscode创建php项目

发布于:2024-03-28 ⋅ 阅读:(10) ⋅ 点赞:(0)

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);
    }
}

本文含有隐藏内容,请 开通VIP 后查看