private static function sort() { if (self::$sorted) { return; } uasort(self::$all, function ($a, $b) { if ($a->priority != $b->priority) { return $a->priority < $b->priority ? -1 : 1; } else { return strcasecmp($a->name, $b->name); } }); foreach (self::$all as $name => $group) { usort($group->render, function ($a, $b) { if ($a[0] != $b[0]) { return $a[0] < $b[0] ? -1 : 1; } if ($a[1] != $b[1]) { return $a[1] < $b[1] ? -1 : 1; } return 0; }); } self::$sorted = true; }