* [ * ['type' => $firstComponentObject, 'sortOrder' => 15], * ['type' => $secondComponentObject, 'sortOrder' => 10], * ... * ] * * @return array Array of components declarations. Items are sorted and misconfigured ones are removed. */ public function filterAndSortDeclaredComponents($declaredComponents) { /** Eliminate misconfigured components */ $declaredComponents = array_filter( $declaredComponents, function ($component) { return (isset($component['type']) && isset($component['sortOrder'])); } ); /** Sort all components according to the provided sort order */ uasort( $declaredComponents, function ($firstComponent, $secondComponent) { return (int)$firstComponent['sortOrder'] <=> (int)$secondComponent['sortOrder']; } ); $declaredComponents = array_values($declaredComponents); return $declaredComponents; } }