Php Laravel-来自帮助程序的返回响应

Php Laravel-来自帮助程序的返回响应,php,laravel,laravel-5.2,Php,Laravel,Laravel 5.2,我正在使用Laravel5.2创建一个公共API。为了缩短控制器中的代码,我创建了几个帮助函数,其中一个是返回API调用响应的函数,如下所示: if (! function_exists('buildResponse')) { function buildResponse($data) { return response()->json($data)->header('foo', 'bar'); } } 这是我从控制器中调用它的方式: pub

我正在使用Laravel5.2创建一个公共API。为了缩短控制器中的代码,我创建了几个帮助函数,其中一个是返回API调用响应的函数,如下所示:

if (! function_exists('buildResponse'))
{
    function buildResponse($data)
    {
        return response()->json($data)->header('foo', 'bar');
    }
}
这是我从控制器中调用它的方式:

public function registration()
{
    buildResponse(['a' => 'Success']);
}
然而,这不起作用。仅当我在函数前面添加一个
return
时,它才起作用

public function registration()
{
    return buildResponse(['a' => 'Success']);
}
有人可能会说,“好吧,那么只需包含
返回值
!”。问题是,此特定函数将由另一个助手函数调用,例如:

if (! function_exists('throwResponseCode'))
{
    /**
     * Throws a response code to the client.
     * @param $code
     * @return mixed
     */
    function throwResponseCode($code)
    {
        switch ($code) {
            case '101':
                $data[$code] = 'Unable to establish a database connection';
                return buildResponse($data);
            // Other cases here
        }
    }
}

是否有任何方法可以从helper函数向客户端发送响应?

简短回答,否。不是直接发送

返回的目的是完成函数并给出结果。Laravel将控制器的返回值视为响应,因此其他函数无法使用返回来完成此操作


这是有办法的。考虑一下这个。创建一个,在控制器生成响应后工作,即在第一行调用
$next($request)
。在这里,您可以根据需要更改响应。要将助手连接到此中间件,可以使用静态方法或属性。中间件的逻辑是,如果有人在中间件的静态属性中放入了一些东西,比如,
$response
,那么就发送这个,而不是控制器响应。

保持它简单bro

改变

 return response()->json($data)->header('foo', 'bar');

 return response()->json($data)->header('foo', 'bar')->send();

它几乎起作用了!我只需要控制器在发送响应后完成其执行。添加一个
die()
并不能完成它,我也不认为这是一种优雅的完成方式。是的。向浏览器发送响应后,不应执行任何操作