[英]Is there a way to pass a JsonSerializable object as an array parameter?
我正在更新 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 對象而不更改底層方法?
最后,我們決定采用的解決方案是像這樣更改簽名和DoResponse()
方法的前幾行:
public function DoResponse($response = array()) {
if($response instanceof JsonSerializable) {
$response = $response->jsonSerialize();
}
if(is_array($response) === false) {
// Error handling
}
// Previous function body.
}
沒有什么令人興奮的,但顯然目前沒有辦法使這個過程完全自動化。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.