3
3
namespace Brazanation \Documents ;
4
4
5
5
use Brazanation \Documents \Cns \CnsCalculator ;
6
- use Brazanation \Documents \Cns \Temporary ;
6
+ use Brazanation \Documents \Cns \TemporaryCalculator ;
7
7
8
8
final class Cns extends AbstractDocument
9
9
{
@@ -17,11 +17,6 @@ final class Cns extends AbstractDocument
17
17
18
18
const DIGIT_COUNT = 1 ;
19
19
20
- /**
21
- * @var DigitCalculable
22
- */
23
- private $ calculator ;
24
-
25
20
/**
26
21
* CNS constructor.
27
22
*
@@ -30,18 +25,9 @@ final class Cns extends AbstractDocument
30
25
public function __construct ($ number )
31
26
{
32
27
$ number = preg_replace ('/\D/ ' , '' , $ number );
33
- $ this ->defineCalculator ($ number );
34
28
parent ::__construct ($ number , self ::LENGTH , self ::DIGIT_COUNT , self ::LABEL );
35
29
}
36
30
37
- public function defineCalculator ($ number )
38
- {
39
- $ this ->calculator = new CnsCalculator ();
40
- if (in_array (substr ($ number , 0 , 1 ), [7 , 8 , 9 ])) {
41
- $ this ->calculator = new Temporary ($ number );
42
- }
43
- }
44
-
45
31
/**
46
32
* {@inheritdoc}
47
33
*/
@@ -52,10 +38,21 @@ public function format()
52
38
53
39
/**
54
40
* {@inheritdoc}
41
+ *
42
+ * Based on given number, it will decide what kind of calculator will use.
43
+ *
44
+ * For numbers starting with 7, 8 or 9 will use TemporaryCalculator,
45
+ * otherwise CnsCalculator.
55
46
*/
56
47
public function calculateDigit ($ baseNumber )
57
48
{
58
- $ digit = $ this ->calculator ->calculateDigit ($ baseNumber );
49
+ $ calculator = new CnsCalculator ();
50
+
51
+ if (in_array (substr ($ baseNumber , 0 , 1 ), [7 , 8 , 9 ])) {
52
+ $ calculator = new TemporaryCalculator ();
53
+ }
54
+
55
+ $ digit = $ calculator ->calculateDigit ($ baseNumber );
59
56
60
57
return "{$ digit }" ;
61
58
}
0 commit comments