第二章TP6常用了解

本章将会介绍一些在TP6中常见的知识点,包括调试,空控制器,助手函数等。

TP6中的调试

在TP6中,访问项目地址,有时候我们会因为各种各样的原因,返回错误页面。如下:
在这里插入图片描述
这里的错误信息,可以在config/app.php中配置,如图:
在这里插入图片描述
如果设置show_error_msg为true,可以看到具体的错误。例如,我输入控制器方法错误。如图:
在这里插入图片描述
如果需要更详细的报错信息,可以在项目根目录将默认生成的.example.env改成.env,这样就会显示详细的报错信息。如下图:
在这里插入图片描述
这种调试,会在开发时排查问题非常有用。

TP6中处理API请求时出现的错误

当ThinkPHP开发API时,难免会出现访问控制器或控制器中方法错误的情况。为了增强健壮性,需要对请求进行错误处理。

1、访问控制器错误

在app目录controller层下创建Error控制器,代码如下:
public function __call($name, $arguments)
{
//输出信息给API
r e s u l t = [ " s t a t u s " = > " 0 " , " m e s s a g e " = > " 控制器错误 " , " r e s u l t " = > " f a i l " ] ; r e t u r n j s o n ( result = [ "status" => "0", "message" => "控制器错误", "result" => "fail" ]; return json( result=["status"=>"0","message"=>"控制器错误","result"=>"fail"];returnjson(result);
}
当访问控制器错误时,会返回如上的错误信息。

2、访问控制器下方法错误

同理,在app目录下文件BaseController中,使用魔术方法__call()。当请求方法错误时,会自动调用这个对象的__call()方法,返回错误信息给API。这样继承自BaseController的子类都会实现请求方法错误的处理。

TP6中常用的助手函数

json()方法

在PHP中,我们使用json_encode()函数来将数组或对象转换为json字符串。在TP6中提供了json()助手函数,改方法与原生方法不同点如下:
TP6中的json()方法与PHP中的json_encode()方法的作用类似,都是将PHP数组或对象转换为JSON格式的字符串。但是它们有以下几个区别:

  1. 参数传递方式不同

json()方法可以接收多个参数,其中第一个参数是需要转换为JSON格式的PHP数组或对象,而后面的参数是可选的,用于设置JSON编码的选项。而json_encode()方法只接收一个参数,即需要转换为JSON格式的PHP数组或对象。

	$result = [
            "status" => 0,
            "message" => "success",
            "result" => [
                "sex" => 0
            ]
        ];
        $code = 201;	
        return json($result, $code); 	//json()方法可以传递多个参数,这里传递一个返回的状态码。

说明:json()方法源码在json()方法实现vendor\topthink\framework\src\helper.php文件中
3. 返回值不同

json()方法返回的是一个Response对象,其中包含了JSON格式的字符串。而json_encode()方法直接返回JSON格式的字符串。

  1. 错误处理不同

json()方法在转换过程中,如果出现了错误,会自动设置HTTP响应码和错误信息,并返回一个包含错误信息的Response对象。而json_encode()方法不会自动处理错误,需要手动处理并设置HTTP响应码和错误信息。

需要注意的是,TP6中的json()方法实际上是对json_encode()方法的一个封装,它们的主要区别在于使用方式和返回值类型

halt()助手函数

在调试时很有用,这个函数等同于dump()和exit()结合起来的效果。就是先输出变量信息,然后终止程序的执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值