Natural::generateDefaults()   A
last analyzed

Complexity

Conditions 3
Paths 4

Size

Total Lines 10
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 10
rs 9.4285
c 0
b 0
f 0
cc 3
eloc 5
nc 4
nop 0
1
<?php
2
3
namespace Samshal\Rando\Packages\Basics;
4
5
use Samshal\Rando\Packages\PackageableInterface;
6
use Samshal\Rando\Packages\Packages;
7
use Samshal\Rando\Rando;
8
use Samshal\Rando\Exceptions\UnallowedLessThanZeroException;
9
10
class Natural extends Packages implements PackageableInterface
11
{
12
13
    protected $fixed;
14
    protected $min;
15
    protected $max;
16
17
    public function setDefaults($defaultsArray = [])
18
    {
19
        $defaultsArray['min'] = 1;
20
        $defaultsArray['max'] = mt_getrandmax();
21
22
        return $defaultsArray;
23
    }
24
25
    protected function setMin($min)
26
    {
27
        $this->min = $min;
28
    }
29
30
    protected function setMax($max)
31
    {
32
        $this->max = $max;
33
    }
34
35
    private function generateDefaults()
36
    {
37
        if (empty($this->min)) {
38
            $this->min = $this->setDefaults()['min'];
39
        }
40
41
        if (empty($this->max)) {
42
            $this->max = $this->setDefaults()['max'];
43
        }
44
    }
45
    private function generateNatural()
46
    {
47
        self::generateDefaults();
48
49
        if ($this->min < 0) {
50
            throw new UnallowedLessThanZeroException();
51
        }
52
        return Rando::integer(['min'=>$this->min, 'max'=>$this->max]);
53
    }
54
55
    public function stringify()
56
    {
57
        return self::generateNatural();
58
    }
59
}
60