多个数组元素到类对象

时间:2015-09-18 14:57:37

标签: php oop

将多个数组对象转换为类对象的最佳做法是什么?

我有以下用例,

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()方法静态是一个很好的决定吗?

2 个答案:

答案 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对象而不是返回另一个对象,那就毫无意义了。