我看到从类实例(对象)到关联数组的转换是一个简单的转换:
$array = (array) $yourObject;
因此,如果我有一个A类和一个关联数组来包含必要的字段以填充一个A类对象就足以相反了吗?例如
$aInstance=(A)$assocArray;
如果不是最简单的方法吗?
答案 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"
}