【问题标题】:set objects properties in php like you would in jQuery像在 jQuery 中一样在 php 中设置对象属性
【发布时间】:2011-12-02 17:32:06
【问题描述】:

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

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

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

有没有办法在不使用数组的情况下在 php 中执行此操作或类似的操作?

【问题讨论】:

  • 为什么不想使用数组? JavaScript 的对象很像 PHP 的数组。
  • 为什么不使用 array_merge 或 array_merge_recursive 的数组? PHP 中的关联数组几乎等同于 JavaScript 对象。
  • 我不希望它是一个数组,因为我必须使用关联数组,从长远来看,它更适合键入。

标签: php jquery oop methods properties


【解决方案1】:

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

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

否则只在循环中遍历一个对象并将其属性分配给另一个对象。

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

【讨论】:

    【解决方案2】:

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

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

    然后按照@zerkms 的建议将其“合并”到构造函数中;)

    【讨论】:

      猜你喜欢
      • 2016-08-25
      • 1970-01-01
      • 1970-01-01
      • 2020-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多