Получить определенное возвращение Слушателя для события с несколькими Слушателями - PullRequest
0 голосов
/ 04 ноября 2018

Что у меня есть: на событие подписались многие слушатели.

'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?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...