19 declare(strict_types=1);
32 protected function orderRecords(array $records,
Data\Order $order): array
34 [$aspect, $direction] = $order->join(
"",
function ($i, $k, $v) {
37 usort($records,
static function (array
$a, array
$b) use ($aspect):
int {
38 if (!isset($a[$aspect]) && !isset($b[$aspect])) {
41 if (!isset($a[$aspect])) {
44 if (!isset($b[$aspect])) {
47 if (is_numeric($a[$aspect]) || is_bool($a[$aspect])) {
48 return $a[$aspect] <=> $b[$aspect];
50 if (is_array($a[$aspect])) {
51 return $a[$aspect] <=> $b[$aspect];
53 if ($a[$aspect] instanceof
Link) {
54 return $a[$aspect]->getLabel() <=> $b[$aspect]->getLabel();
57 return $a[$aspect]->getTimestamp() <=> $b[$aspect]->getTimestamp();
60 return strcmp($a[$aspect], $b[$aspect]);
63 if ($direction === $order::DESC) {
64 $records = array_reverse($records);
69 protected function limitRecords(array $records,
Data\Range
$range): array
71 $records = array_slice($records, $range->getStart(), $range->getLength());
$a
thx to https://mlocati.github.io/php-cs-fixer-configurator for the examples