簡體   English   中英

有沒有辦法將 JsonSerializable 對象作為數組參數傳遞?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM