NumericNo0PasswordGenerator   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 3
eloc 7
dl 0
loc 28
rs 10
c 0
b 0
f 0
ccs 7
cts 7
cp 1

2 Methods

Rating   Name   Duplication   Size   Complexity  
A generate() 0 3 1
A getRandomDigitWithNo0() 0 9 2
1
<?php
2
3
/*
4
 * @copyright 2018 Hilmi Erdem KEREN
5
 * @license MIT
6
 */
7
8
namespace Erdemkeren\Otp\PasswordGenerators;
9
10
use Erdemkeren\Otp\PasswordGeneratorInterface;
11
use Exception;
12
13
/**
14
 * Class NumericNo0PasswordGenerator.
15
 */
16
class NumericNo0PasswordGenerator extends NumericPasswordGenerator implements PasswordGeneratorInterface
17
{
18
    /**
19
     * Generate a numeric password with no zeroes.
20
     *
21
     * @param int $length
22
     *
23
     * @return string
24
     */
25 2
    public function generate(int $length): string
26
    {
27 2
        return (string) str_replace(0, $this->getRandomDigitWithNo0(), (string) parent::generate($length));
28
    }
29
30
    /**
31
     * Generate a random digit with no zeroes.
32
     *
33
     * @return int
34
     */
35 2
    private function getRandomDigitWithNo0()
36
    {
37
        try {
38 2
            $int = random_int(1, 9);
39 1
        } catch (Exception $e) {
40 1
            $int = rand(1, 9);
41
        }
42
43 2
        return $int;
44
    }
45
}
46