【发布时间】:2020-02-13 09:15:10
【问题描述】:
我正在更新 REST Api 类;在每个方法结束时,我必须调用DoResponse 方法将我作为第一个参数传递的数据转换为JSON 字符串。
作为需求的一部分,我为每个端点创建了响应对象;所有这些对象都实现了\JSONSerializable
class CustomResponseObject implements JsonSerializable {
public function jsonSerialize() {
return [/*...*/];
}
}
然后我在我的 Api 方法中实例化这些对象并将其传递给 DoResponse 函数。
function myApiEndpoint() {
$res = new CustomResponseObject();
/*...*/
return $this->DoResponse($res);
}
问题是,该方法只接受数组作为第一个参数。
public function DoResponse(array $response = array());
我可以通过传递$res->jsonSerialize() 来解决这个问题,但是有没有办法在我将对象传递给DoResponse 函数时自动对对象进行jsonSerialize,而无需更改底层方法?
【问题讨论】:
-
return $this->DoResponse([$res]); -
@EmptyBrain 很抱歉,但这会改变响应内容,这是不可接受的