我開始學習PHP,並有一個體面的Java背景。我在PHP語言中遇到了以下編碼挑戰:PHP移動自定義Json編碼/解碼爲抽象類
我希望能夠以JSON格式對我的PHP類進行編碼/解碼。我已經創建了PHP類,它們爲類私有屬性使用了getter/setter方法。這導致本地json_encode方法在編碼期間跳過這些屬性。我發現下面的腳本,拿起私有屬性和格式化他們在一個JSON字符串:
<?php
public function encodeJSON()
{
foreach ($this as $key => $value)
{
$json->$key = $value;
}
return json_encode($json);
}
public function decodeJSON($json_str)
{
$json = json_decode($json_str, 1);
foreach ($json as $key => $value)
{
$this->$key = $value;
}
}
?>
我研究了這條代碼,並意識到它是如何生成的字符串和對象。現在我想將這些代碼推送到一個抽象類中,以便我可以擴展這個類並接收這個功能。
問題是我無法從抽象類中引用具體類中的私有屬性。我對Java的知識告訴我,如果不指定抽象方法並強制每個具體類實現它,我可能無法做到這一點。我嘗試了多次嘗試在PHP中使用反射,並將具體類傳遞給抽象類的構造函數。任何人都可以指向正確的方向,或者告訴我這是不可能的嗎?
它是否適用於'protected'? (私有變量的概念不能在交付的類中看到它們,因此這是正確的行爲) – Vyktor 2012-02-09 12:07:29
@Vyktor是的。我非常專注於學習新的東西,忘記了我的基本編程基礎。謝謝你挑選那個。如果您將其作爲答案發布,我會接受。 – 2012-02-09 12:13:17