PHP关联数组到类实例

时间:2016-10-15 10:51:45

标签: php arrays

我看到从类实例(对象)到关联数组的转换是一个简单的转换:

$array =  (array) $yourObject;

因此,如果我有一个A类和一个关联数组来包含必要的字段以填充一个A类对象就足以相反了吗?例如

$aInstance=(A)$assocArray;

如果不是最简单的方法吗?

1 个答案:

答案 0 :(得分:1)

事情这很容易,因为php无法以某种方式神奇地猜测如何处理该数组的值。对象是与数组不同的结构化数据集。所以你需要一个结构的描述和规则如何使用它。

您需要在类定义中实现构造函数,然后可以基于某个给定的数组构造一个新对象。看看这个任意的例子:

<?php
class A {
    protected $title;
    protected $data;
    public function __construct ($data) {
        $this->title = $data['title'];
        $this->data = sprintf('this is foo: %s', $data['foo']);
    }
    public function __toString() {
        return sprintf(
            "I am an object titled '%s'\nI hold that foo value: %s\n",
            $this->title,
            $this->data
        );
    }
}

$data = [
    'title' => 'hello world',
    'foo' => 'foovalue',
    'bar' => 'barvalue'
];
$object = new A($data);
echo $object;
var_dump($object);

明显的输出是:

I am an object titled 'hello world'
I hold that foo value: this is foo: foovalue
/home/arkascha/test.php:25:
class A#1 (2) {
  protected $title =>
  string(11) "hello world"
  protected $data =>
  string(21) "this is foo: foovalue"
}