Laravel通过引用传递数组到事件订阅者



是否可以通过引用将数组传递到事件订阅者?

我有一个事件"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

最新更新