我有一个对象是数据库查询的结果,看起来像这样(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"
}
我只需要将所有属性值"转移"到具有相同属性名称的不同类。有没有简单的方法可以做到这一点?
看看 PHP 的 get_object_vars()
函数,无需大量赋值语句即可达到预期的效果:
foreach (get_object_vars($sourceObject) as $name => $value) {
$destinationObject->$name = $value;
}
应确保根据需要向其添加足够的错误检查。
简单且"故障安全"的解决方案
$target = new MyClass;
$target->id = $source->id;
$target->title = $source->title;
// and so on
编码有点多一点,但好处是
- 如果
$source
的某些属性发生变化,您会注意到它(因为它在$target
中丢失) - 您可以完全独立于
$source
命名$target
的属性 - 你看,会发生什么