Suppose I have these classes:
class Foo { public $_data; public function addObject($obj) { $this->_data['objects'][] = $obj; } } class Bar { public $_data; public function __construct() { $this->_data['value'] = 42; } public function setValue($value) { $this->_data['value'] = $value; } } $foo = new Foo(); $bar = new Bar(); $foo->addObject($bar); foreach($foo->_data['objects'] as $object) { $object->setValue(1); } echo $foo->_data['objects'][0]->_data['value'];
My actual code, very similar, uses ArrayAccess:
foreach($this->_data['columns'] as &$column) { $filters = &$column->getFilters(); foreach($filters as &$filter) { $filter->filterCollection($this->_data['collection']); } }
filterCollection changes the value in $ filter, but when you look at this $ object, this value is incorrect.
source share