在php中像在jQuery中一样设置对象属性


set objects properties in php like you would in jQuery

在jQuery插件中,我们可以传递带有属性的匿名对象。

$('selecter').function({property: 'value', property: 'value'})

插件代码中jquery有一个名为extend的函数。它的作用是将2个对象作为参数,然后用对象2的属性覆盖对象1的属性。

是否有一种方法来做到这一点或类似的东西在php不使用数组?

如果您的对象只是stdClass的实例-您可以只做

$result = (object)array_merge((array)$a, (array)$b);

否则,在循环中遍历一个对象,并将其属性赋值给另一个对象。

foreach (get_object_vars($b) as $key => $val) {
    $a->{$key} = $val;
}

在php 5.4中,您将能够使用数组的简短语法:

$obj = new obj(['property' => 'value']);

,然后像@zerkms建议的那样在构造函数中"合并";)