【发布时间】:2011-05-11 05:04:33
【问题描述】:
我的类中有一个通过引用接受对象的方法。它装饰该对象以扩展功能。
基本上...
public function addObject( &$object ) {
$object = $this->decorate( $object );
}
我正在尝试编写一个方便的方法addObjects(),但它并没有改变$object
这不起作用...
public function addObjects( array &$objects ) {
foreach( $objects as $object ) {
$this->addObject( $object );
}
}
我已经尝试了很多其他路线,但没有一个奏效。我确信有办法做到这一点,但它正在逃避我。也许我一直盯着我的电脑太久了。
这是一个活生生的例子
更新
似乎除了在创建对象数组时传递引用之外别无他法
$objects = array( &$object1, $object2 ); //object1 will be decorated, object2 will not
$thing->addObjects( $objects );
【问题讨论】:
-
如果在函数中设置
$objects = NULL,然后在函数返回后设置var_dump()会怎样? -
我刚刚编辑了我的答案以包含另一个解决方案。不那么老套,但您需要重新分配变量。
标签: php arrays object pass-by-reference