Completed
Push — master ( ddcac2...5ca960 )
by Christopher
22s
created

xsFloat::isOK()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 4
Ratio 100 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 4
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace AlgoWeb\xsdTypes;
4
5
use AlgoWeb\xsdTypes\Facets\MinMaxTrait;
6
7
/**
8
 * The type xsd:float represents an IEEE single-precision 32-bit floating-point number. The format of xsd:float
9
 * values is a mantissa (a number which conforms to the type decimal) followed, optionally, by the character "E"
10
 * or "e" followed by an exponent.  The exponent must be an integer.  For example, 3E2 represents 3 times 10 to
11
 * the 2nd power, or 300.  The exponent must be an integer.
12
 *
13
 * In addition, the following values are valid: INF (infinity), -INF (negative infinity), and NaN (Not a Number).
14
 * INF is considered to be greater than all other values, while -INF is less than all other values.
15
 * The value NaN cannot be compared to any other values, although it equals itself.
16
 * @package AlgoWeb\xsdTypes
17
 */
18 View Code Duplication
class xsFloat extends xsAnySimpleType
19
{
20
    use MinMaxTrait;
21
22
    /**
23
     * Construct.
24
     *
25
     * @param float $value
26
     */
27
    public function __construct($value)
28
    {
29
        parent::__construct($value);
30
        $this->setWhiteSpaceFacet('collapse');
31
    }
32
33
    protected function fixValue()
34
    {
35
        parent::fixValue();
36
        switch (strtolower($this->value)) {
37
            case 'inf':
38
                $this->value = INF;
39
                return;
40
            case '-inf':
41
                $this->value = -INF;
42
                return;
43
            default:
44
                $this->value = filter_var($this->value, FILTER_VALIDATE_FLOAT, ['options' => [
45
                    'default' => 'NaN', // value to return if the filter fails
46
                    'decimal' => '.'
47
                ]]);
48
        }
49
    }
50
    protected function isOK()
51
    {
52
        $this->CheckMinMax($this->value);
53
    }
54
}
55