任何扩展类的方法都不会返回任何东西吗?

时间:2019-03-26 15:31:35

标签: php laravel

我已经用我自己的类扩展了一个类,并且如果我点击了方法responseNotFound(我肯定会这么做是因为dd()如果我在ApiController中编写它就可以了),它将不会返回任何内容。它只是以某种方式跳过了来自responseNotFound的返回,并返回到if语句下面的返回,该语句具有随json一起提供的所有数据的所有空值(这实际上是正常情况,但是永远不要执行此行)。

class LessonsController extends ApiController{

...some other methods here...

public function show($id)
{
    $lesson = Lesson::find($id);

    if (! $lesson) {
        $this->respondNotFound('Lesson does not exist');
    }

    return Response::json([
        'data' => $this->lessonTransformer->transform($lesson),
    ], 200);

}

和ApiController看起来像:

use Illuminate\Support\Facades\Response;

class ApiController extends Controller{

protected $statusCode = 404;

public function getStatusCode()
{
    return $this->statusCode;
}

public function setStatusCode($statusCode)
{
    $this->statusCode = $statusCode;
}

public function respondNotFound($message = 'Not Found')
{
    return Response::json([
        'error' => [
            'message' => $message,
            'status_code' => $this->getStatusCode()
            ]
            ]);
}}

我也曾尝试在LessonController中为statusCode调用getter,但同样的事情,它只是不响应返回。但是,正如我上面提到的,如果我在ApiController中将任何东西死掉并转储了,一切正常,它应该可以正常工作,因此,如果我将此Response :: json ... dd放在前面。

任何人都有这个问题,或者有什么想法可能是什么原因?

2 个答案:

答案 0 :(得分:1)

我认为您的问题出在逻辑块上。请尝试以下操作:

 if (!$lesson){
    return $this->respondNotFound('Lesson does not exist');
 }

您必须在if块中使用return关键字停止脚本,否则即使 respondNotFound()调用后, LessonsController 中的脚本仍将继续运行。

答案 1 :(得分:0)

您可能只需要在return之前添加$this->respondNotFound('Lesson does not exist');,一切就可以正常工作