19 declare(strict_types=1);
    34     private readonly 
string $key;
    39         $parts = explode(
'_', $sort_by);
    41         $direction = 
$parts[1] ?? 
'';
    44             'title' => [
'badge', 
'getTitle', 
'strcasecmp'],
    45             'date' => [
'assignment', 
'getTimestamp', $this->
minus()],
    47         $directions = [
'asc' => 
'asc', 
'desc' => 
'desc'];
    49         $key = isset($map[$what]) ? $what : 
key($map);
    52         $this->badgeOrAssignment = $map[
$key][0];
    53         $this->method = $map[
$key][1];
    54         $this->
compare = Closure::fromCallable($map[$key][2]);
    64     public function compare(array $badge_and_assignment, array $other): 
int    73     public function key(): string
    89             'title_asc' => 
'sort_by_title_asc',
    90             'title_desc' => 
'sort_by_title_desc',
    91             'date_asc' => 
'sort_by_date_asc',
    92             'date_desc' => 
'sort_by_date_desc',
    98         return $this->direction === 
'asc' ? 1 : -1;
   103         return static fn(
int $x, 
int $y): 
int => $x - $y;
 readonly Closure $compare
 
__construct(string $sort_by='')
 
if($clientAssertionType !='urn:ietf:params:oauth:client-assertion-type:jwt-bearer'|| $grantType !='client_credentials') $parts
 
readonly string $direction
 
readonly string $badgeOrAssignment
 
compare(array $badge_and_assignment, array $other)