是否可以通过引用将数组传递到事件订阅者?
我有一个事件"user.create. "我想传递一个数组给事件,这样我可以在需要的时候修改它。
调用是这样的。
Event::fire('user.create.show', array($data));
事件订阅者是这样的。
public function createShow(&$data)
{
$data['foo'] = 'bar';
return $data;
}
我得到一个"参数1到UserSubscriber::createShow()预计是一个引用,值给定"PHP错误。
导致错误的行如下:
return call_user_func_array($callable, $data);
我知道我可以返回它的值,但Laravel返回一个数组与变量和多维数组,如果多个变量被传递到事件。我可以解析返回值,但它会使我的代码更干净,更容易,如果我可以通过引用传递。
好吧,使用Event::fire('user.create.show', array($data));
,你显然是传递一个值,因为你在调用中使用数组构造函数。修改为:
$data = array($data);
Event::fire('user.create.show', $data);
还要注意这里的注释以及这里通过引用传递数组的解决方案
这是通过引用传递的方式:
Event::listen('foo', function(&$ref){
$ref = 'bar';
});
$foo = 'foo';
$args[] = &$foo;
Event::fire('foo', $args);
echo $foo; // bar