1 | <?php |
||
9 | class Real implements ValueObjectInterface, NumberInterface |
||
10 | { |
||
11 | protected $value; |
||
12 | |||
13 | /** |
||
14 | * Returns a Real object given a PHP native float as parameter. |
||
15 | * |
||
16 | * @param float $number |
||
|
|||
17 | * @return static |
||
18 | */ |
||
19 | 5 | public static function fromNative() |
|
20 | { |
||
21 | 5 | $value = func_get_arg(0); |
|
22 | |||
23 | 5 | return new static($value); |
|
24 | } |
||
25 | |||
26 | /** |
||
27 | * Returns a Real object given a PHP native float as parameter. |
||
28 | * |
||
29 | * @param float $number |
||
30 | */ |
||
31 | 121 | public function __construct($value) |
|
32 | { |
||
33 | 121 | $value = \filter_var($value, FILTER_VALIDATE_FLOAT); |
|
34 | |||
35 | 121 | if (false === $value) { |
|
36 | 1 | throw new InvalidNativeArgumentException($value, array('float')); |
|
37 | } |
||
38 | |||
39 | 120 | $this->value = $value; |
|
40 | 120 | } |
|
41 | |||
42 | /** |
||
43 | * Returns the native value of the real number |
||
44 | * |
||
45 | * @return float |
||
46 | */ |
||
47 | 113 | public function toNative() |
|
51 | |||
52 | /** |
||
53 | * Tells whether two Real are equal by comparing their values |
||
54 | * |
||
55 | * @param ValueObjectInterface $real |
||
56 | * @return bool |
||
57 | */ |
||
58 | 11 | public function sameValueAs(ValueObjectInterface $real) |
|
59 | { |
||
60 | 11 | if (false === Util::classEquals($this, $real)) { |
|
61 | 1 | return false; |
|
62 | } |
||
63 | |||
64 | 11 | return $this->toNative() === $real->toNative(); |
|
65 | } |
||
66 | |||
67 | /** |
||
68 | * Returns the integer part of the Real number as a Integer |
||
69 | * |
||
70 | * @param RoundingMode $rounding_mode Rounding mode of the conversion. Defaults to RoundingMode::HALF_UP. |
||
71 | * @return Integer |
||
72 | */ |
||
73 | 2 | public function toInteger(RoundingMode $rounding_mode = null) |
|
74 | { |
||
75 | 2 | if (null === $rounding_mode) { |
|
76 | 2 | $rounding_mode = RoundingMode::HALF_UP(); |
|
77 | 2 | } |
|
78 | |||
79 | 2 | $value = $this->toNative(); |
|
80 | 2 | $integerValue = \round($value, 0, $rounding_mode->toNative()); |
|
81 | 2 | $integer = new Integer($integerValue); |
|
82 | |||
83 | 2 | return $integer; |
|
84 | } |
||
85 | |||
86 | /** |
||
87 | * Returns the absolute integer part of the Real number as a Natural |
||
88 | * |
||
89 | * @param RoundingMode $rounding_mode Rounding mode of the conversion. Defaults to RoundingMode::HALF_UP. |
||
90 | * @return Natural |
||
91 | */ |
||
92 | 1 | public function toNatural(RoundingMode $rounding_mode = null) |
|
93 | { |
||
94 | 1 | $integerValue = $this->toInteger($rounding_mode)->toNative(); |
|
95 | 1 | $naturalValue = \abs($integerValue); |
|
96 | 1 | $natural = new Natural($naturalValue); |
|
97 | |||
98 | 1 | return $natural; |
|
99 | } |
||
100 | |||
101 | /** |
||
102 | * Returns the string representation of the real value |
||
103 | * |
||
104 | * @return string |
||
105 | */ |
||
106 | 4 | public function __toString() |
|
110 | |||
111 | /** |
||
112 | * @return float |
||
113 | */ |
||
114 | 1 | function jsonSerialize() |
|
115 | { |
||
118 | |||
119 | |||
120 | } |
||
121 |
This check looks for PHPDoc comments describing methods or function parameters that do not exist on the corresponding method or function.
Consider the following example. The parameter
$italy
is not defined by the methodfinale(...)
.The most likely cause is that the parameter was removed, but the annotation was not.