开启强类型后出现这个问题

来源:7-5 发送短信验证码API逻辑编写以及布置的作业

夜明河

2020-01-15

PHP版本是7.3.9
代码和教程上一样,我只保留的关键部分

<?php
declare(strict_types=1);
namespace appapicontroller;

use appBaseController;

/**
 * 发送短信
 */
class Sms extends BaseController
{
    
    public function code() : object{        
        return show(config('status.success'), 'is ok');
    }
}

返回这样的错误,Return value of appapicontrollerSms::code() must be an instance of appapicontrollerobject, instance of think
esponseJson returned

如果改成以下的代码,则可以正常

<?php
declare(strict_types=1);
namespace appapicontroller;

use appBaseController;
use thinkResponseJson;

/**
 * 发送短信
 */
class Sms extends BaseController
{
    
    public function code() : Json {        
        return show(config('status.success'), 'is ok');
    }
}

更新:::::下面是show方法

function show($status, $message, $data = [], $httpStatus = 200){
    $results = [
        'status'    => $status,
        'message'   => $message,
        'result'    => $data,
    ];

    return json($results, $httpStatus);
}
写回答

5回答

左手边的回忆

2020-02-21

你这个要求的返回时json字符串,你就应该使用json不应该使用object


0
0

PHP最差初学者

2020-02-21

请问问题解决了吗,我也遇到相同的情况

0
0

happy技师

2020-01-17

请问问题解决了吗? 我也遇到了相同的情况

在 controller 层的 Sms.php 开启强类型, 报同样的错, 关闭强类型不报错

tp版本6.0.2

//img1.sycdn.imooc.com/szimg/5e2127db091aa36f11610950.jpg

//img1.sycdn.imooc.com/szimg/5e2127db09e35bbd09340800.jpg

//img.mukewang.com/szimg/5e2128c809b3ca6808310668.jpg

0
0

singwa

2020-01-15

use think\response\Json;

这样试试。 Response =>  response小写。按道理和这个没有关系,您TP哪个版本?

0
3
夜明河
6.0版本啊
2020-01-15
共3条回复

singwa

2020-01-15

您好,您的show方法截图我看看。

0
3
singwa
回复
夜明河
OK,我试试你说的那个版本,晚点回复您。
2020-01-15
共3条回复

全流程开发 TP6.0实战高并发电商服务系统

一课就能掌握TP6.0基础及运用,打造完整高并发的电商后端项目

1458 学习 · 1310 问题

查看课程