检索具有多个侦听器的事件的某些侦听器返回

时间:2018-11-04 17:58:14

标签: laravel-5.7

我有什么:事件吸引了许多听众。

'App\Events\UserStored' => [
    'App\Listeners\SendConfirmationEmail',
    'App\Listeners\CalculateDiscount',
    'App\Listeners\SendPromoEmail'
]

在一个监听器中,我有一些回报:

//CalculateDiscount Listener
public function handle(UserStored $event)
{
    //logic
    return ['Very important response'];
}

我要获取此退货:

$e = event(new UserStored(...));

但是有一个问题。当侦听器很多时,$e是一个二维数组:

array:3 [▼
  0 => null
  1 => array:1 [▶] // <-- ['Very important response']
  2 => null
]

问题:直接访问“非常重要的响应”是$e[1]-实在不灵活。如果我改变

'App\Events\UserStored' => [
    'App\Listeners\SendConfirmationEmail',
    'App\Listeners\CalculateDiscount',
    'App\Listeners\SendPromoEmail'
]

'App\Events\UserStored' => [
    'App\Listeners\SendConfirmationEmail',
    'App\Listeners\OneMoreListener', // <-- new Listener
    'App\Listeners\CalculateDiscount',
    'App\Listeners\SendPromoEmail'
]

我必须改变

$e = event(new UserStored(...));
$importantResponse = $e[1]; //<-- understandable index

$e = event(new UserStored(...));
$importantResponse = $e[2]; //<-- WOW, understandable index

问题:有没有办法得到这样的东西

array:3 [▼
  'SendConfirmationEmail' => null
  'CalculateDiscount' => array:1 [▶] // <-- ['Very important response']
  'SendPromoEmail' => null
]

或至少

array:1 [▼
  0 => array:1 [▶] // <-- ['Very important response']
]

没有覆盖很多框架逻辑吗?

0 个答案:

没有答案