通过保留原始实例来更改PHP中的数组项的属性值

时间:2013-10-19 12:15:51

标签: php arrays inheritance object-properties

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

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'

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

1 个答案:

答案 0 :(得分:1)

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