2015-09-18 92 views
2

什麼是最佳做法,以轉換多個對象數組到類的對象?多組元素類對象

我有以下使用情況下,

class Queue { 
    private $id; 

    public function getId() 
    { 
     return $this->id; 
    } 

    public function setId($id) 
    { 
     $this->id = $id; 

     return $this; 
    } 

    private $name; 

    public function getName() 
    { 
     return $this->name; 
    } 

    public function setName($name) 
    { 
     $this->name = $name; 

     return $this; 
    } 
    public static function getAll() { 

     // Guzzle HTTP Request returns JSON 
     $responseArray = json_decode ($response->getBody()); 
    } 

} 

這是作曲家包的一部分。所以,現在當使用這種Queue我們可以要求父應用程序的多個Queues。現在如何將這個json響應轉換爲Queue對象。

而且它是一個很好的決定,宣佈getAll()方法靜態?

回答

3

我承擔JSON響應包含一個關聯數組,其中鍵是在你的對象,你想要的屬性名稱。如果是這樣,您可以使用this answer中找到的解決方案。基本上,你只需通過數組迭代,並使用您的數組作爲屬性名和值的屬性值中發現的關鍵:

$queue = new Queue(); 
foreach ($array as $key => $value) 
{ 
    $queue->$key = $value; 
} 
2

@Hassan是說真的,如果密鑰不相同或重疊比你可以使用This answer。你基本上需要通過json_decode給出的對象強制轉換爲Queu對象,並返回。

在這種情況下,靜態是有道理的,因爲你會在此處創建和返回一個Queu對象,如果你首先需要做的Queu對象比返回一個又一個,沒有什麼意義。