($b['priority'] ?? 0); }); return $items; } public static function renderEvent($event) { $eventItems = Event::dispatch($event); // Make multidimensional array flat $eventItems = array_reduce($eventItems, function ($carry, $item) { // Is item a multidimensional array? if (is_array($item) && isset($item[0])) { return array_merge($carry, $item); } return array_merge($carry, [$item]); }, []); // Sort based on priority usort($eventItems, function ($a, $b) { return ($a['priority'] ?? 0) <=> ($b['priority'] ?? 0); }); $view = ''; foreach ($eventItems as $item) { if (isset($item['view'])) { $view .= $item['view']; } } // Now we smash them together and return it as html return $view; } }