我在api應(yīng)用中封裝了幾個(gè)響應(yīng)返回的方法, 但用法并不友好,比如:
public function success($data = false)
{
return json([
'code' => 200,
'msg' => '操作成功',
'data' => $data
]);
}
我的本意是,在接口請(qǐng)求中直接 $this->success() 就能夠輸出響應(yīng)
但在實(shí)際的操作過(guò)程中并非如此,我必須使用 return $this->success() 才能夠輸出數(shù)據(jù)
當(dāng)然,還有一些更復(fù)雜一些的場(chǎng)景, 比如在checkIpVisit, checkUserVisit 中控制訪(fǎng)問(wèn)頻率,超過(guò)預(yù)期頻率則直接輸出, 否則繼續(xù)執(zhí)行程序
$res = $this->checkUserVisit();
if ($res) {
return $res;
}
如果只能夠做成上面這個(gè)樣子的話(huà),看起來(lái)就十分愚蠢了
有什么好一點(diǎn)的實(shí)現(xiàn)方式嗎?
return是需要返回內(nèi)容時(shí)使用它,調(diào)用方法,它內(nèi)的 return是返回了它自己的內(nèi)容,在你調(diào)用的地方只是僅僅得到了這個(gè)內(nèi)容而已。
checkXXX不通過(guò)的時(shí)候可以直接throw exception,然后用exception handler捕獲進(jìn)行輸出
這樣就不會(huì)有你說(shuō)的"看起來(lái)就十分愚蠢"的樣子了,直接就
return $this->checkUserVisit();
// or
$this->checkUserVisit();
//your next code here
如果直接使用 return $this->checkUserVisit(); 的話(huà), 驗(yàn)證無(wú)誤會(huì)返回一個(gè)void
你自己上面寫(xiě)的是
$res = $this->checkUserVisit();
if ($res) {
return $res;
}
那又怎么是個(gè)void?
我改成了 try { checkXX(); checkXX();... } catch (xx) {return $this->error($e->getMessage())};