精华内容
下载资源
问答
  • thinkphp6的自定义异常处理
    千次阅读
    2022-02-27 11:39:00

    框架支持异常处理由开发者自定义类进行接管,需要在app目录下面的provider.php文件中绑定异常处理类,例如:

    <?php
    use app\ExceptionHandle;
    use app\Request;
    
    // 容器Provider定义文件
    return [
        'think\Request'          => Request::class,
    //    'think\exception\Handle' => ExceptionHandle::class,//原来的异常
        'think\exception\Handle' => '\\app\\exception\\ExecptionHandle'
    ];

    然后再app下面新建一个exception文件夹放自定义错误信息

    <?php
    /**
     *
     * User: 小贝壳
     * Date: 2022/2/27
     **/
    
    namespace app\exception;
    
    use think\facade\Env;
    use think\exception\Handle;
    use app\exception\HttpExceptions;
    use think\Response;
    use Throwable;
    
    class ExecptionHandle extends Handle
    {
        private $msg = "未知错误";
        private $httpCode = 500;
        private $errorCode = 19999;
    
        public function render($request, Throwable $e): Response
        {
            //判断在`.env`里面是否开始了调试,开启了调试就原样返回,关闭了调试就返回自定义的json格式的错误信息
            if(Env::get("APP_DEBUG") == 1){
                return parent::render($request,$e);
            }
            $this->msg = $e->getMessage() ?: $this->msg;
            //HttpExceptions是继承同级目录下HttpExceptions,代码在下方
            if ($e instanceof HttpExceptions) {
                $this->httpCode = $e->getStatusCode() ?: $this->httpCode;
            }
            $this->errorCode = $e->getCode() ?: $this->errorCode;
            $result_data = [
                'message' => $this->msg,
                'data' => [],
                'code' => $this->errorCode
            ];
            return json($result_data, $this->httpCode);
    
            // 其他错误交给系统处理
            return parent::render($request, $e);
        }
    
    }

    同级目录下HttpExceptions 文件

    <?php
    /**
     *
     * User: 小贝壳
     * Date: 2022/2/27
     * Time: 1:42
     **/
    
    namespace app\exception;
    
    use Exception;
    
    class HttpExceptions extends \RuntimeException
    {
        private $statusCode;
        private $headers;
        //主要是重构$code前提,$previous和 $headers在后面方便调用
        public function __construct(int $statusCode, string $message = '', $code = 0, Exception $previous = null, array $headers = [])
        {
            $this->statusCode = $statusCode;
            $this->headers    = $headers;
    
            parent::__construct($message, $code, $previous);
        }
    
        public function getStatusCode()
        {
            return $this->statusCode;
        }
    
        public function getHeaders()
        {
            return $this->headers;
        }
    }

    调用

    use app\exception\HttpExceptions;
    throw new HttpExceptions(404,"自定义错误",'444');
    更多相关内容
  • 通用网站后台权限管理系统源码 ThinkPHP6内核 基于ThinkPHP6框架开发的通用后台权限管理系统,底层采用国内最流行的ThinkPHP6框架,支持内容管理、文章管理、用户管理、权限管理、角色管理等功能
  • thinkphp6 RESTful API开发

    2021-04-15 23:43:12
    thinkphp6 RESTful API开发 开发过程记录笔记 https://blog.csdn.net/weixin_41120504/article/details/115638094
  • Thinkphp6.0.5完整资源包下载,内含当前版本的所有插件,不喜欢使用composer安装的同学可以带走呀!
  • Workerman + Thinkphp6 实现可视化秒级定时任务。兼容 Windows 和 Linux 系统。 其实就可视化页面部分本项目采用 TP 框架 + Layui 实现 ,当然也可以用其他方式,比如,纯 HTML + CSS + JS。因为定时任务本身,它不...
  • 通过实战案例,掌握ThinkPHP6验证码、前置中间件、后置中间件,用中间件完美实现后台登录的拦截验证。后台分角色权限,实现不同角色的权限控制
  • Thinkphp6实现队列代码

    2021-03-23 12:24:55
    Thinkphp6实现队列代码,取消未支付订单,超时订单,超时收货订单等任务系统。
  • 基础路由前后一起存储,用户登录后从后端获取菜单权限,再由前段生产路由。这样前端不用编写路由。缺点是添加菜单需要注意使用公用的index和base。... 运行vue前端运行出现echarts报错,请安装对应版本即可。...
  • ThinkPHP6实战开发电商系统

    千人学习 2020-05-07 11:58:33
    课程功能亮点: 本次电商系统涵盖了ThinkPHP6常见的大部分功能知识点,多应用、中间件、视图渲染、助手函数、图片上传、验证码、数据库、模型、异常等。 电商系统界面参考早期的小米商城官网,包含:商品SKU、库存、...
  • Thinkphp6 redis队列 消息事件 gatewayworker聊天打通版
  • thinkphp6利用workerman实现一对一聊天,包含聊天列表页面和一对一聊天界面,信息实时推送,实时显示未读信息数量。(用navicat将chat.sql文件导入,配置数据库链接,html文件内修改ip和域名,修改api/chat内的域名...
  • ThinkPHP6基于精简核心和统一用法两大原则在5的基础上对底层架构做了进一步的优化改进,并更加规范化。本课程以开发一个真实企业网站项目为基线,以TP6官网手册为标准,把TP6框架理论知识详细贯穿到整个项目实战开发...
  • ThinkPHP6内核通用网站后台权限管理系统源码 基于thinkphp6框架开发的通用后台权限管理系统,底层采用国内最流行的thinkphp6框架, 支持内容管理、文章管理、用户管理、权限管理、角色管理等功能。
  • thinkPHP6源码.zip

    2019-06-10 20:45:22
    这是我使用composer下载的thinkphp6源码,欢迎大家来下载。
  • 本文给大家分享的是使用whoops接管thinkphp6的异常处理,从而使我们得到新的世界,希望大家能够喜欢
  • kbycms快速开发网站,有需要的下载可以试试,包含rabc权限,注册登录等功能,前台根据自己需求开发
  • ThinkAdmin v6基于v1-v5版本的积累,结合ThinkPHP 6.0的思维重新构建,减少大量原非必需的组件,自建存储层、服务层及任务机制,增加了许多友好指令!ThinkAdmin v6经历了数个项目实践与测试,不停调整,目前系统...
  • ThinkPHP6入门之留言系统

    千人学习 2020-04-17 09:10:25
  • ThinkPHP6.zip

    2021-09-16 16:30:16
    ThinkPHP v6.0.8,解压密码baidu.rudon.cn,如果需要全新安装的话,请使用composer create-project topthink/think tp
  • tp6作为后端提供api  开发的移动端仿京东商城应用。 学会使用tp6框架  对api接口进行jwt  token认证 使用阿里短信接口发送短信,用户注册登录 学会配置使用微信 支付宝h5支付 学会调用快递接口 ...
  • thinkphp6.rar

    2019-05-29 15:32:20
    thinkphp6 composer拉取的纯净代码,直接运行(php7.1+版本)代码不需要在做其他操作之类的了
  • Thinkphp6快速入门教程

    千次阅读 2021-03-09 10:06:31
    为什么学ThinkPhp6? ​ php是世界上最好的语言。thinkphp是最流行的php框架。thinkphp6版本是最新最前沿的版本。屏幕前学习的你,嗯,是最好看的. 这优势,没的说,赶紧买买买!!!哦不说错了,学它学它选它~物美...

    为什么学ThinkPhp6?

    ​ php是世界上最好的语言。thinkphp是最流行的php框架。thinkphp6版本是最新最前沿的版本。屏幕前学习的你,嗯,是最好看的.

    这优势,没的说,赶紧买买买!!!哦不说错了,学它学它选它~物美价廉,大家快来学啊!!!

    开始thinkphp6:

    thinkphp6其实就是thinkphp5.2,6是最新的版本,很多人听过thinkphp3点几,thinkphp5.0,thinkphp5.1,很好奇为什么不见5.2呢。事实上,从5.1到5.2版本变化太大了,就换掉了小版本的迭代,直接取名新的大版本6.0。thinkphp6虽然发行没多久,但是版本迭代的也挺快的,因此未来主流肯定是6版本。

    我的建议,开始学的时候,一定一定不要去看开发文档。看开发文档来学习效果事倍功半。开发文档是给有基础的人用的,是已经会开发的人用的一个手册,而对于初学者最好最快的学习方法就是看视频,推荐视频thinkphp6教程:
    b站教学视频(虽然这个视频不是特别好,但聊胜于无)。

    安装配置:

    环境及下载:

    • php版本>7(集成服务phpstudy可以很方便的下载并管理不同版本的php)
    • 下载管理工具composer
    • 下载thinkphp6

    thinkphp6的php环境支持是>7以上:我用的的服务器集成软件PHPStudy,在里面很方便的下好了php7.3,还能切换版本。

    下载php管理工具composer,这个工具后面会用到,强烈要求下载。因为现在thinkphp6搞的跟python一样,就像python使用包工具pip或者easy_stall,composer工具敲命令也可以快速安装相关依赖。首先composer可以用来下最新的thinkphp6,官方也推荐这种下载。但是,thinkphp6文件也可以不用composer下载,在官网中有链接,百度云盘的那种,如果有其他问题导致composer下载tp6不成功,就使用后者方法。

    • composer的安装:推荐菜鸟教程,菜鸟教程下载composer工具:除了自己的安装目录以及选择php.exe文件目录以外一直下一步就好了。然后再改一下镜像。菜鸟教程有说。

    下载thinkphp6使用composer各种版本下载thinkphp教程(这个可以看开发文档),可是我下的不很成功,最后没有去纠结问题出在哪。直接改用网盘下载了,thinkphp链接网盘

    下好之后,在服务器集成工具phpstudy中新建一个网站,配置好我的apache的网站相关信息:主要是网站根目录域名绑定,我的根目录是D盘下的php_site目录,根目录在浏览器网址栏上的体现是www.cool.xiongmm.cn/ (www.cool.xiongmm.cn是我的本地域名),配置好网站信息然后开启apache的服务:再把下好的thinkphp6框架文件放在根目录下,可以改个名tp6(名字简短,便于访问)。
    下面是我本地配置的截图:

    image-20200418013847407

    image-20200418102614418

    image-20200418102522982

    测试是否安装成功,thinkphp的对外部公开可以访问的目录是public,相当于我们java项目下的Java Resource资源文件夹。所以如果不另外设置,任何不包含public目录的路由都不可访问:此时我在浏览器中输入:www.cool.xiongmm.cn/tp6/public或者www.cool.xiongmm.cn/tp6/public/index.php/index/index(为什么这个路径也可以访问首页下面会讲到)显示如下内容,就说明tp6部署成功。

    image-20200418103853329

    image-20200418103807277

    首页访问配置:

    在vscode编辑器中打开tp6文件(前提是你vscode下好了插件并配置好了php环境的路径,用其他编辑器也行),看到默认下好的框架目录如下:初学我们需要重点关注的目录大致只有app、config、public三个

    image-20200418104945663

    我们先看一下app目录:默认只有一个controller文件,且下面写了一个index.php类。在Index类的index()方法返回的信息就是我们访问默认首页显示的内容。

    image-20200418104902125

    尝试改一下返回内容:

    image-20200418105950985

    重新访问:

    image-20200418110016057

    image-20200418110044433

    (因为我tp6已经修改了很多,不方便从头开始演示,于是又下了一个新的thinkphp6,更名为tp6_1,后面都用这个路径演示。)

    说到这里就不得不说一下,为什么测试的路径两个www.cool.xiongmm.cn/tp6_1/public或者www.cool.xiongmm.cn/tp6_1/public/index.php/index/index都可以访问,而且路径中没有包含controller目录:

    说一下首页访问路径:

    1、访问www.cool.xiongmm.cn/tp6_1/public路由,会自动调用tp6_1框架中默认应用的默认控制器(index.php)中的方法(index class中的index()方法)。所以你如果想修改默认的首页,不妨去修改这些默认设置。

    2、访问http://域名/最外层文件名/public目录/过滤文件index.php/控制器名(控制器和类名一样)/方法名/方法参数名/参数值,在路径中 index.php 是必须经过的文件,这一路由有点复杂,但是他就是这样设置的,愣是想改的话也可以,不过我还没试过。。 如下示例,我们用此路径访问index控制器中的hello,并传入参数:

    image-20200418111844598

    怎么回事呢?看不出来是哪里出错了,路径是没错的,下面我们开启debug模式来看看:

    开启debug调试:

    找到app同级目录文件.example.env,更名为.env,另外在文件中要加上一句:APP_DEBUG = true,保存。

    (讲两点: 第一点是.env文件算是可有可无,其他配置文件首先会去尝试寻找.env文件的配置,并引入,找不到就用自己的配置信息。包括数据库配置database.php文件中,也会去寻找.env文件里面的配置信息。后面会慢慢学习到;另外一点是开启debug模式后,在后端向前端返回参数信息的时候,后面除了返回自己的 参数字符串信息 还会跟一大串的html代码,那些都是开启debug模式的自带的显示调试的信息,挺烦人的,也不知道咋办,关了吧,没调试,难排错,不关吧,获取个参数还得搞字符串分割,觉得烦可以改成app_dubug = false)

    image-20200418111830178

    image-20200418112540609

    重新输入url访问:会跳出来调试信息,很直观的,告诉我们可能是路由设置的问题。

    image-20200418113351694

    解决办法:在config目录下找到第一个app.php文件打开,将with_route的值改为false即可。

    image-20200418111601780

    再次访问:它又可以了

    image-20200418113623891

    此时,你在controller目录下面尝试着创建其他的类也是可以访问的,示例如下:

    controller下创建user.php,并编写同名的类。里面写一个love方法,看一下请求是否可以成功:

    image-20200418115548352

    访问一下:http://localhost/tp6_1/public/index.php/user/love

    image-20200418115607994

    出现上面这种情况是因为我们没有加入命名空间,命名空间是为了声明这是一个控制器,应该是不能少的,毕竟thinkphp框架是采用MVC模式,model和view可以没有,控制器没有那还是框架嘛。。。

    image-20200418120243071

    再访问一下:

    image-20200418114927286

    在之前的3.几版本中,类名类文件名开头都必须严格大写,这里却不用。但是为了统一,还是尽量类文件类名首字母都大写。

    多应用开发:

    前面一直强调默认应用,默认控制器,默认调用方法。那么控制器和方法都可以有多个,为什么应用还有默认之说,这不才一个项目吗?难道项目还可以有多个吗?答案是肯定的。

    多应用与单应用的理解:

    多应用:在app下还可以同时创建多个应用,这些应用相当于大项目中包含的是多个小项目。

    单应用:实际上就是大项目只提供一种服务,可以理解成我们平常认为的一个peoject一个项目,刚下载好的thinkphp项目进入之后使用的单应用开发。

    为什么要弄个多应用开发呢:

    在一个手机app软件中,提供的服务并非单一,想要开发这样的app,可以分别在不同的服务器,不同的项目中去开发。但是这样有一点,因为各应用之间独立性高太高,若是应用之间相互要交互传递信息,不在一个服务器可能涉及跨域,哪怕是在同一服务器下的不同项目之间开发或者交互也有很多不便之处。我想这大概是设计多应用开发的初衷吧,姑且先这样理解。

    默认下载好的是单应用开发,就相当于tomcat下面只放了一个java的web项目,此时,你直接在app目录下面控制器里写类和方法即可。而要想体验多应用,则需要进行另外的配置。其实我们在刚开始学的时候没什么必要学这个,不出意外的话我们大都只有一个应用。但是为了以后能深入学习,还是要了解一下的。

    如果需要开发多个app,分四步走:

    1、新建应用目录

    在app目录下建立自己的应用目录(因为是多应用开发,可以创建多个,名字自取),然后把原本的controller目录删掉!或者移到自己创建的应用目录下面,反正不能留,这个很重要,不然会报错说找不到控制器。

    2、多应用配置的扩展安装

    想要使用多应用是要开启多应用的,先查看有无自动开启多应用的配置项,打开config——app.php文件,刚开始我这里是没有'auto_multi_app' => true 这项配置的,这个配置是开启多应用开发关键。

    image-20200418092732554

     

    要先去安装 多应用的扩展。添加tp6的扩展 ,使用composer工具即可,在tp6目录下进入cmd命令行执行下列命令;

    composer require topthink/think-multi-app

    image-20200418092050177

    扩展安装成功之后,把配置项写入并保存: 'auto_multi_app' => true, (逗号不能忘了)

    image-20200418092849192

    3、修改命名空间

    在控制器类中,命名空间要改成 : app/yourappname/crotroller,且url访问路径在过滤文件index.php后面要加入自己的应用名!!!!

    示例:

    image-20200418141605627

    image-20200418132731840

    然后就可以进行多应用同时开发了。

    4、默认访问应用设置:

    整个大项目可包含有多个应用,一旦应用多了,难免纠结哪个应用来处理首页请求。默认访问项目的应用是Index,此时若是看index不顺眼可把他删了(不删也可)。然后修改默认应用为其他的应用。

    找到config下面的app.php文件,默认的访问应用是index,我改成了shopapp。

    image-20200418131745459

    然后把controller目录删了,app下创建一个shopapp文件(同时我在app下也创建了另一个应用shopapp2来展示多应用),然后在shopapp文件下创建controller文件(controller不能少,它告诉框架找控制器应到这儿来),controller下创建index.php文件,index.php中编写index类(index类是本应用默认访问的控制器),并写一个方法index()(默认访问方法)。此时,这个应用的默认访问路径就畅通了,如下图:

    image-20200418132604169

    保存,访问一下:

    image-20200418132537847

    image-20200418132731840

    初试配置先讲这些。

    展开全文
  • ThinkPHP5和ThinkPHP6的区别

    千次阅读 2020-08-23 15:47:24
    本文作者:陈进坚 个人博客:https://jian1098.github.io ... 1.安装方式 thinkphp6只能通过composer安装 composer config -g repo.packagist composer https://mirrors.aliyun.com/composer # 设.

    本文作者:陈进坚
    个人博客:https://jian1098.github.io
    CSDN博客:https://blog.csdn.net/c_jian
    简书:https://www.jianshu.com/u/8ba9ac5706b6
    联系方式:jian1098@qq.com

    1.安装方式

    thinkphp6只能通过composer安装

    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer		# 设置composer为阿里云镜像,解决国内使用composer慢的问题
    composer create-project topthink/think myproject			# 安装稳定版,myproject为你的项目名
    

    2.配置文件

    thinkphp5里面的config.php被拆分成了app、cache、database、route等等模块,放在了config文件夹;

    thinkphp6新引入了一个.env的文件,可以通过读取这个环境设置去配置数据库等等

    3.自带web服务

    直接php think run就可以在本地启动一个web服务器,还可以用-p参数指定端口

    4.目录结构

    application文件夹重命名为app

    thinkphp5核心框架是项目根目录thinkphp下 , thinkphp6是vendor/topthink

    5.控制器

    之前继承think\Controller类,现在改为继承BaseController

    6.跨域

    只需要在middleware.php中注册\think\middleware\AllowCrossDomain就可以搞定跨域问题

    7.组件独立

    独立ORM

    独立模版引擎

    8.严格模式

    thinkphp6使用了php7严格模式

    9.引入Filesystem

    10.支持多应用入口

    admin应用可以设置admin.php入口文件来访问;api应用可以设置api.php入口文件来访问。

    如果要使用多应用模式,你需要安装多应用模式扩展

    composer require topthink/think-multi-app
    

    然后你的应用目录结构需要做如下调整,主要区别在app目录增加了应用子目录,然后配置文件和路由定义文件都纳入应用目录下

    ├─app 应用目录
    │  ├─index              主应用
    │  │  ├─controller      控制器目录
    │  │  ├─model           模型目录
    │  │  ├─view            视图目录
    │  │  ├─config          配置目录
    │  │  ├─route           路由目录
    │  │  └─ ...            更多类库目录
    │  │ 
    │  ├─admin              后台应用
    │  │  ├─controller      控制器目录
    │  │  ├─model           模型目录
    │  │  ├─view            视图目录
    │  │  ├─config          配置目录
    │  │  ├─route           路由目录
    │  │  └─ ...            更多类库目录
    │
    ├─public                WEB目录(对外访问目录)
    │  ├─admin.php          后台入口文件
    │  ├─index.php          入口文件
    │  ├─router.php         快速测试文件
    │  └─.htaccess          用于apache的重写
    │
    ├─config                全局应用配置目录
    ├─runtime               运行时目录
    │  ├─index              index应用运行时目录
    │  └─admin              admin应用运行时目录
    

    支持在同一个入口文件中访问多个应用,并且支持应用的映射关系以及自定义。如果你通过index.php入口文件访问的话,并且没有设置应用name,系统自动采用自动多应用模式。

    自动多应用模式的URL地址默认使用

    // 访问admin应用
    http://serverName/index.php/admin
    // 访问shop应用
    http://serverName/index.php/shop
    

    以通过app.php配置文件的default_app配置参数指定默认应用

    // 设置默认应用名称
    'default_app' => 'home',
    

    11.域名绑定应用

    config/app.php 配置文件中定义域名和应用的绑定

    'domain_bind' => [
    	'www.a.com' => 'index', 	// 域名绑定到www应用
    	'admin.a.com' => 'admin', 	// admin绑定到后台应用
    ], 
    

    12.自动加载

    thinkphp5真正实现了按需加载,所有类库采用自动加载机制,并且支持类库映射和composer类库的自动加载;

    thinkphp6使用composer方式实现类自动加载

    展开全文
  • PAA-ThinkPHP6-Composer PAA ThinkPHP6 Composer Package 安装扩展 composer require lazyskills/paa-thinkphp6 嫌弃太慢,建议使用国内源 composer config repo.packagist composer ...
  • PHP版本:V7.4.3 (TP6需要求PHP版本>7.1) 安装过程根据环境不同自行百度,建议新手使用集成环境phpStudy. PHPStudy官网小皮(点击跳转) 二、安装ThinkPHP6.0 6.0版本开始,必须通过Composer方式安装和更新,所以...

    环境搭建及ThinkPHP6.0的安装

    一、环境搭建

    服务器:Nginx1.16.1 端口:80
    数据库:MySQL5.7.26 端口:3307
    PHP版本:V7.4.3 (TP6需要求PHP版本>7.1)

    安装过程根据环境不同自行百度,建议新手使用集成环境phpStudy.
    PHPStudy官网小皮(点击跳转)

    二、安装ThinkPHP6.0

    6.0版本开始,必须通过Composer方式安装和更新,所以你无法通过Git下载安装。
    composer 安装方法不做介绍。

    安装稳定版:

    composer create-project topthink/think tp6
    

    更新框架:

    composer update topthink/framework
    

    生成目录:
    在这里插入图片描述
    访问浏览器:http://localhost/tp6/public/
    出现以下界面说明已安装成功。
    在这里插入图片描述


    ⭐️重磅推荐:免费商用电商系统

    😏想白嫖整个电商系统用来商用?
    🤑想有自己的商城实现财富自由?
    🤓想学习最佳实践提升自己技术?

    快来进入🚀 传送门 🚀,开源免费、完整示例带你快速入门,轻松二开,走上人生巅峰!👨‍🎓
    在这里插入图片描述

    展开全文
  • 效果 实现步骤 准备工作 ... 使用composer创建tp6项目 ...composer create-project topthink/think nameOfProject ... 或者在laragon中实现一键生成tp6项目Laragon实现快速创建ThinkPHP项目_Rudon滨海..
  • thinkphp6验证码接口

    千次阅读 2021-12-22 20:48:49
    查看接口文档 验证码接口用于登录页面展示时,获取验证码图片地址及验证码标识 安装验证码功能组件(如果是官网下载的完整版框架,无需安装) composer require topthink/think-captcha ...Route::get('getCaptcha...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 106,286
精华内容 42,514
关键字:

thinkphp6

友情链接: 程序.rar