将多个数组对象转换为类对象的最佳做法是什么?
我有以下用例,
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()
方法静态是一个很好的决定吗?
答案 0 :(得分:3)
我假设JSON响应包含一个关联数组,其中键是对象中所需的属性名称。如果是这样,您可以使用this answer中的解决方案。基本上,您只需遍历数组并使用数组中的键作为属性名称,将值作为属性值:
$queue = new Queue();
foreach ($array as $key => $value)
{
$queue->$key = $value;
}
答案 1 :(得分:2)
@Hassan说的是真的,如果密钥不是相同或重叠,那么你可以使用This answer。您基本上需要将json_decode
给出的对象强制转换为Queu
对象并将其返回。
静态在这种情况下是有道理的,因为你将在这里创建并返回一个Queu对象,如果你首先需要创建Queu对象而不是返回另一个对象,那就毫无意义了。