如何封装响应输出方法

13280048428

我在api应用中封装了几个响应返回的方法, 但用法并不友好,比如:

public function success($data = false)
{
    return json([
        'code' => 200,
        'msg' => '操作成功',
        'data' => $data
    ]);
}

我的本意是,在接口请求中直接 $this->success() 就能够输出响应
但在实际的操作过程中并非如此,我必须使用 return $this->success() 才能够输出数据
当然,还有一些更复杂一些的场景, 比如在checkIpVisit, checkUserVisit 中控制访问频率,超过预期频率则直接输出, 否则继续执行程序

$res = $this->checkUserVisit();
if ($res) {
    return $res;
}

如果只能够做成上面这个样子的话,看起来就十分愚蠢了

有什么好一点的实现方式吗?

978 2 0
2个回答

小杰

return是需要返回内容时使用它,调用方法,它内的 return是返回了它自己的内容,在你调用的地方只是仅仅得到了这个内容而已。

  • 暂无评论
nitron

checkXXX不通过的时候可以直接throw exception,然后用exception handler捕获进行输出
这样就不会有你说的"看起来就十分愚蠢"的样子了,直接就

return $this->checkUserVisit();
// or
$this->checkUserVisit();
//your next code here
  • 13280048428 2022-04-06

    如果直接使用 return $this->checkUserVisit(); 的话, 验证无误会返回一个void

  • nitron 2022-04-06

    你自己上面写的是

    $res = $this->checkUserVisit();
    if ($res) {
        return $res;
    }

    那又怎么是个void?

  • 13280048428 2022-04-06

    我改成了 try { checkXX(); checkXX();... } catch (xx) {return $this->error($e->getMessage())};

年代过于久远,无法发表回答
🔝