Что у меня есть: на событие подписались многие слушатели.
'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
является 2d массивом:
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']
]
не переопределяет много логики Framework?