Test Failed
Pull Request — master (#28)
by Christopher
02:49 queued 29s
created

xsDouble::fixValue()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 17
Code Lines 13

Duplication

Lines 17
Ratio 100 %

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 17
loc 17
rs 9.4285
cc 3
eloc 13
nc 3
nop 0
1
<?php
2
3
namespace AlgoWeb\xsdTypes;
4
5
use AlgoWeb\xsdTypes\Facets\MinMaxTrait;
6
7
/**
8
 * The type xsd:double represents an IEEE double-precision 64-bit floating-point number.  The format of xsd:double
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 the
11
 * 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.  The value NaN
15
 * cannot be compared to any other values, although it equals itself.
16
 * @package AlgoWeb\xsdTypes
17
 */
18 View Code Duplication
class xsDouble extends xsAnySimpleType
0 ignored issues
show
Coding Style introduced by
This class is not in CamelCase format.

Classes in PHP are usually named in CamelCase.

In camelCase names are written without any punctuation, the start of each new word being marked by a capital letter. The whole name starts with a capital letter as well.

Thus the name database provider becomes DatabaseProvider.

Loading history...
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
51
    protected function isOK()
52
    {
53
        $this->CheckMinMax($this->value);
54
    }
55
}
56