2011-06-13 66 views
1

我對多個RESTful服務有多個調用。我在收到數據時使用本地PHP json_decode轉換爲PHP,並在發送數據時使用json_encode我應該爲所有RESTful JSON交換創建包裝嗎?

我擔心的是,隨着深度嵌套數據我寫出來的代碼,如:

$interestType = $person['children'][$i]['interests'][$j]['type']; 

這可以得到相當混亂。我覺得會有創造,它的方法/實例變量環繞這些結構的物體,這樣我可以做一些好處:

$interestType = $person->getChild($i)->getInterest($j)->getType(); 

似乎更清楚我的,但實際上它不是更準確。

只使用原生PHP數組,併爲每個REST資源編寫包裝類都會有什麼好處?

我擔心的是,我將不得不編寫自定義編碼/解碼函數來映射到這些包裝。

回答

0

我不熟悉PHP中對象的實現,但讀this blogpost about array vs object performance,它似乎開銷很小。所以我想可以歸結爲風格偏好。一個簡單的(未嵌套)陣列到對象變換器可以在這裏找到:


一個折衷,這將是微不足道的實施:

<?php 

$json = '{"a": [{"aa" : 11}, {"ab" : 12}],"b":2,"c":3,"d":4,"e":5}'; 

$o = json_decode($json);  // plain object 
$a = json_decode($json, true); // this will yield an array 

echo $o->a[0]->aa; 

?> 

json_decode採用可選參數,該參數確定提供的JSON是否轉換爲相關聯合陣列。如果不是($o),則您有一半的您的目標語法。

相關問題