Vscode创建php项目

news/2024/4/28 16:12:52/文章来源:https://blog.csdn.net/m0_54136420/article/details/136969125

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_1026831.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React-1-jsx基础-事件绑定-样式处理

一.JSX基础-概念和本质 1.1 什么是JSX JSX是JavaScript和XML&#xff08;HTML&#xff09;的缩写&#xff0c;表示在JS代码中编写HTML模版结构,它是React中编写UI模版的方式 优势&#xff1a; 1. HTML的声明式模版写法 2. JS的可编程能力 JSX的本质&#xff1a; JSX并不是标…

[openGL] qt5版本+mingw编译Assimp库+调用

目录 一 版本 二 编译问题 三 CMAKE准备 四 开始编译 4.1 准备Assimp源码 4.2 编译工具准备 4.3 生成Assimp库 4.4 使用Assimp 4.4.1 准备 4.4.2 加载模型 4.4.3 模型效果 一 版本 Assimp官网上已经停止更新截至在3.3.1版本,但是这个版本编译是最稳定的,较新的版本…

WORDPRESS从WORD复制粘贴公式

整合教程&#xff1a;WordPress插件包整合教程 WordPaster支持自动上传本地图片文件&#xff0c;自动上传Word文档中的图片 步骤与效果&#xff1a; 1.打开word文档&#xff0c;复制word文档内容 2.在网页中打开编辑器页面&#xff0c;点击“粘贴本地文件,Word文档”按钮上传…

GBase8a-GDCA认证考试-复习参考题

个人能力有限&#xff0c;正确率97%&#xff08;97分&#xff09;。 请注意甄别&#xff0c;根据所学知识综合判断&#xff0c;欢迎指出错误答案。 欢迎学习天津南大通用数据技术股份有限公司|GBASE-致力于成为用户最信赖的数据库产品供应商 免费参加认证培训&#xff1a;为…

Visio中存在问题的解决方法

公式缩放 mathtype公式在visio缩放之后&#xff0c;出现了变形。 解决方法&#xff1a;每次输入公式都通过 插入->对象->mathType Equation 新建一个公式。可以避免 注&#xff1a;网上有的说在word中使用mathtype编写公式&#xff0c;之后复制到visio中。 插入波形 选择…

Java的IDEA的工程管理

模块和包的图标&#xff1a; 举个例子&#xff1a; IDEA中创建包&#xff1a; 如图所示&#xff0c;com.LBJ的意思是在com包中创建子包LBJ 参见&#xff1a; IDEA中项目、模块和包的关系_idea中模块和项目-CSDN博客

应用层协议之DNS协议

一.应用层协议的相关数据传输格式 1.文本字符串格式 应用层主要是自定义协议&#xff0c;以点外卖为例&#xff1a; 客户点开软件&#xff0c;就是应用程序和服务器之间进行网络通信交互。请求和响应可以如下设置 请求&#xff1a;用户信息&#xff0c;位置信息&#xff0c…

Vue模块化开发步骤—遇到的问题—解决办法

目录 1.npm install webpack -g 2.npm install -g vue/cli-init 3.初始化vue项目 4.启动vue项目 Vscode初建Vue时几个需要注意的问题-CSDN博客 1.npm install webpack -g 全局安装webpack 直接命令提示符运行改指令会报错&#xff0c;operation not permitted 注意&#…

【QT入门】 Qt代码创建布局之水平布局、竖直布局详解

往期回顾&#xff1a; 【QT入门】 Qt实现自定义信号-CSDN博客 【QT入门】 Qt自定义信号后跨线程发送信号-CSDN博客 【QT入门】 Qt内存管理机制详解-CSDN博客 【QT入门】 Qt代码创建布局之水平布局、竖直布局详解 先看两个问题&#xff1a; 1、ui设计器设计界面很方便&#xf…

1学习使用axios

一、axios介绍&#xff1a; axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;用于浏览器和 Node.js。它提供了一种简单的方法来发送 HTTP 请求&#xff0c;并且具有很多实用的功能&#xff0c;使得网络请求变得更加方便和可靠。 以下是 axios 的一些主要特点和功能&…

python判断当前日期是全年哪一天

设计者&#xff1a;ISDF 版本&#xff1a;v3..0 日期&#xff1a;04/01/2019设计者&#xff1a;ISDF 版本&#xff1a;v4..0 日期&#xff1a;03/27/2024 import datetime#闰年判断函数 def ys_leep_year(year):ys_leep Falseif (year % 400 0) or ((year % 4 0) and (year …

【每日力扣】452. 用最少数量的箭引爆气球与763. 划分字母区间

&#x1f525; 个人主页: 黑洞晓威 &#x1f600;你不必等到非常厉害&#xff0c;才敢开始&#xff0c;你需要开始&#xff0c;才会变的非常厉害。 452. 用最少数量的箭引爆气球 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points &#xff0…

SpringBoot学习之ElasticSearch下载安装和启动(Windows版)(三十)

本文先写windows下的下载安装和启动,后续有时间再补充其他环境下(Mac、Linux、Docker)的,这里我们后续对ElasticSearch简称为ES,读者习惯这一称呼就好。 一,ES下载 可以百度【ElasticSearch官网】或者直接点击这里的ES官网下载地址:​​​​​ Download Elasticsearch…

【 MyBatis 】| 关于多表联查返回 List 集合只查到一条的 BUG

目录 一. &#x1f981; 写在前面二. &#x1f981; 探索过程2.1 开端 —— 开始写 bug2.2 发展 —— bug 完成2.3 高潮 —— bug探究2.4 结局 —— 效果展示 三. &#x1f981; 写在最后 一. &#x1f981; 写在前面 今天又是 BUG 气满满的一天&#xff0c;一个 xxxMapper.xm…

聊聊低代码产品的应用场景

随着数字化转型的不断深入&#xff0c;企业对于快速开发和迭代软件应用的需求也越来越迫切。而在这样的背景下&#xff0c;低代码产品应运而生&#xff0c;成为了一种热门的技术解决方案。本文将解读低代码产品的定义并探讨其应用场景。 一、低代码产品的定义 低代码产品是一种…

恢复 Linux 上已删除的文件:extundelete 、PhotoRec (***)

为什么Linux的命令 rm 没有回收站呢&#xff1f;Trash-Cli&#xff1a;Linux 命令行回收站工具 &#xff08;***&#xff09; https://blog.csdn.net/ken2232/article/details/136981360 extundelete 直接 apt 安装&#xff0c;运行出现段错误&#xff0c;网络上给出的一种解决…

vscode添加gitee

1.创建仓库 2.Git 全局设置 3.初始化仓库 2.1 打开vscode打开需要上传到给git的代码文件 2.2.点击左边菜单第三个的源代码管理->初始化仓库 4.点击加号暂存所有更改 5.添加远程仓库 5.1 添加地址&#xff0c;回车 5.2 填写库名&#xff0c;回车 6.提交和推送 6.1 点击✔提交…

C++类的六个默认成员函数(详细解析与总结)

目录 前言&#xff1a; 一、构造函数 a.特点 b.注意事项 1.首先明确什么是默认构造函数 2.默认构造函数对内置类型与自定义类型的处理 c.总结 二、析构函数 a.特点 b.注意事项 1.什么时候写析构函数&#xff1f; 2.析构函数对内置类型与自定义类型的处理 c.总结 …

武汉星起航引领跨境电商新纪元,助力卖家扬帆远航全球市场

在全球化的商业浪潮中&#xff0c;跨境电商行业异军突起&#xff0c;成为连接全球市场的重要纽带。亚马逊&#xff0c;作为全球零售电商的巨擘&#xff0c;为无数卖家提供了走向国际市场的广阔舞台。在这片充满机遇与挑战的蓝海中&#xff0c;武汉星起航电子商务有限公司以其独…

R包安装失败怎么办?(一)msigdbr

R包安装失败 如果是网络原因&#xff08;error connection&#xff09;&#xff0c;就使用本地安装的方法。如果是网络原因&#xff0c;通常会出现安装超时&#xff0c;或者网络无法连接的提示 当你把timeout 设置到1000之后还会报错&#xff0c;怎么办&#xff1f; options…