1

在将对象推入数组后,我不确定通过其原始指针更改对象的属性值的方法。 在我的父类中,有一个对象数组,将项目推入其中的函数返回原始实例。

class Parent {
  public $items;
  function __construct() { $items = array(); }

  function addItem() {
    $item = new stdClass();
    $item->foo = 'foo';
    $items[] = $item;  
    return $item;
  }
}

在 Child 类中,我得到了原始实例,并且可以轻松更改其foo属性值:

class Child extends Parent {
  function newItem() {
    $item_instance = $this->addItem();
    $item_instance->foo = 'bar';
  }
}

当我实例化 Child 类时,它的行为与预期一样,更改了父类的数组项属性值。

$my_child = new Child();
$my_child->newItem();
print $my_child->items[0]->foo; // prints 'bar'

我的问题是:我应该避免在对象被推入数组后使用原始对象指针,还是这种方法正确?

4

1 回答 1

1

在将对象指针推入数组后,没有理由避免使用它。您推入数组的内容实际上是指针,而不是对象。

于 2013-10-19T12:27:44.833 回答