我有一个对象是数据库查询的结果,看起来像这样(var_dump输出):
object(stdClass)#17 (6) {
["id"]=>
string(1) "1"
["title"]=>
string(20) "Some Title"
["description"]=>
string(41) "Some really good stuff. Description here."
["slug"]=>
string(19) "some-slug-url"
["picture_url"]=>
NULL
["price"]=>
string(4) "5.99"
}
我只需要将所有属性值“转移”到具有相同属性名称的其他类。有一种简单的方法可以做到这一点吗?
答案 0 :(得分:2)
看一下PHP的get_object_vars()
-function,无需大量的赋值语句即可达到预期的效果:
foreach (get_object_vars($sourceObject) as $name => $value) {
$destinationObject->$name = $value;
}
您应该确保根据需要为此添加足够的错误检查。
答案 1 :(得分:2)
简单的“故障安全”解决方案
$target = new MyClass;
$target->id = $source->id;
$target->title = $source->title;
// and so on
它的代码更多一点,但好处是
$source
的某些属性发生变化,您会注意到它(因为它在$target
中丢失了)$target
的属性命名为完全独立于$source