Distance   A
last analyzed

Complexity

Total Complexity 1

Size/Duplication

Total Lines 65
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 38
c 0
b 0
f 0
dl 0
loc 65
rs 10
wmc 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A comparison() 0 3 1
1
<?php
2
3
namespace Bavix\Geo\Unit;
4
5
use Bavix\Geo\Comparator\Comparable;
6
use Bavix\Geo\Value\Valable;
7
8
/**
9
 * Class Unit
10
 *
11
 * @package Bavix\Geo
12
 *
13
 * @property float $yards
14
 * @property float $meters
15
 * @property float $kilometers
16
 * @property float $miles
17
 * @property float $nauticalMiles
18
 * @property float $wheels
19
 *
20
 * @method static Distance fromYards(float $value)
21
 * @method static Distance fromMeters(float $value)
22
 * @method static Distance fromKilometers(float $value)
23
 * @method static Distance fromMiles(float $value)
24
 * @method static Distance fromNauticalMiles(float $value)
25
 * @method static Distance fromWheels(float $value)
26
 */
27
class Distance extends Valable
28
{
29
30
    use Comparable;
31
32
    const PROPERTY_YARDS = 'yards';
33
    const PROPERTY_METERS = 'meters';
34
    const PROPERTY_KILOMETERS = 'kilometers';
35
    const PROPERTY_MILES = 'miles';
36
    const PROPERTY_NAUTICAL_MILES = 'nauticalMiles';
37
    const PROPERTY_WHEELS = 'wheels';
38
39
    /**
40
     * @var array
41
     */
42
    protected $properties = [
43
        self::PROPERTY_YARDS => [
44
            'type' => self::WRITE,
45
            'modify' => [
46
                self::PROPERTY_MILES => Provider\Yard::class,
47
            ],
48
        ],
49
        self::PROPERTY_METERS => [
50
            'type' => self::WRITE,
51
            'modify' => [
52
                self::PROPERTY_MILES => Provider\Meter::class,
53
            ],
54
        ],
55
        self::PROPERTY_KILOMETERS => [
56
            'type' => self::WRITE,
57
            'modify' => [
58
                self::PROPERTY_MILES => Provider\Kilometer::class,
59
            ],
60
        ],
61
        self::PROPERTY_MILES => [
62
            'type' => self::WRITE,
63
            'modify' => [
64
                self::PROPERTY_YARDS => Provider\Yard::class,
65
                self::PROPERTY_METERS => Provider\Meter::class,
66
                self::PROPERTY_KILOMETERS => Provider\Kilometer::class,
67
                self::PROPERTY_NAUTICAL_MILES => Provider\NauticalMile::class,
68
                self::PROPERTY_WHEELS => Provider\Wheel::class,
69
            ],
70
        ],
71
        self::PROPERTY_NAUTICAL_MILES => [
72
            'type' => self::WRITE,
73
            'modify' => [
74
                self::PROPERTY_MILES => Provider\NauticalMile::class,
75
            ],
76
        ],
77
        self::PROPERTY_WHEELS => [
78
            'type' => self::WRITE,
79
            'modify' => [
80
                self::PROPERTY_MILES => Provider\Wheel::class,
81
            ],
82
        ],
83
    ];
84
85
    /**
86
     * @param self $object
87
     * @return int
88
     */
89
    protected function comparison(self $object): int
90
    {
91
        return $this->miles <=> $object->miles;
92
    }
93
94
}
95