12, * 'actions' => $action * ] * ] */ private $crudCallbacks; public function __construct( $crudCallbacks = [] ) { $this->crudCallbacks = $this->sortActions($crudCallbacks); } private function sortActions(array $actionConfig): array { usort($actionConfig, function (array $configA, array $configB) { $sortOrderA = $configA[self::SORT_ORDER] ?? 0; $sortOrderB = $configB[self::SORT_ORDER] ?? 0; return $sortOrderA <=> $sortOrderB; }); return $actionConfig; } public function getIterator(): \Traversable { $actions = []; foreach ($this->crudCallbacks as $callback) { $action = $callback[self::ACTION] ?? null; if ($action instanceof CRUDCallbackInterface) { $actions[] = $action; } } return new ArrayIterator($actions); } }