FixtureSorter::orderedFixtureSorter()   B
last analyzed

Complexity

Conditions 7
Paths 1

Size

Total Lines 16
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
cc 7
eloc 8
nc 1
nop 0
dl 0
loc 16
rs 8.8333
c 1
b 1
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Facile\MongoDbBundle\Fixtures;
6
7
final class FixtureSorter
8
{
9
    public static function sort(array $fixtures): array
10
    {
11
        usort($fixtures, self::orderedFixtureSorter());
12
13
        return $fixtures;
14
    }
15
16
    private static function orderedFixtureSorter(): \Closure
17
    {
18
        return static function ($a, $b): int {
19
            if ($a instanceof OrderedFixtureInterface && $b instanceof OrderedFixtureInterface) {
20
                return $a->getOrder() - $b->getOrder();
21
            }
22
23
            if ($a instanceof OrderedFixtureInterface && ! $b instanceof OrderedFixtureInterface) {
24
                return 1;
25
            }
26
27
            if (! $a instanceof OrderedFixtureInterface && $b instanceof OrderedFixtureInterface) {
28
                return -1;
29
            }
30
31
            return 0;
32
        };
33
    }
34
}
35