Skip to content

Commit b9df36a

Browse files
keep it simple
choose calculator when calculateDigits is called
1 parent b371fee commit b9df36a

File tree

2 files changed

+14
-17
lines changed

2 files changed

+14
-17
lines changed

src/Cns.php

+13-16
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
namespace Brazanation\Documents;
44

55
use Brazanation\Documents\Cns\CnsCalculator;
6-
use Brazanation\Documents\Cns\Temporary;
6+
use Brazanation\Documents\Cns\TemporaryCalculator;
77

88
final class Cns extends AbstractDocument
99
{
@@ -17,11 +17,6 @@ final class Cns extends AbstractDocument
1717

1818
const DIGIT_COUNT = 1;
1919

20-
/**
21-
* @var DigitCalculable
22-
*/
23-
private $calculator;
24-
2520
/**
2621
* CNS constructor.
2722
*
@@ -30,18 +25,9 @@ final class Cns extends AbstractDocument
3025
public function __construct($number)
3126
{
3227
$number = preg_replace('/\D/', '', $number);
33-
$this->defineCalculator($number);
3428
parent::__construct($number, self::LENGTH, self::DIGIT_COUNT, self::LABEL);
3529
}
3630

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-
4531
/**
4632
* {@inheritdoc}
4733
*/
@@ -52,10 +38,21 @@ public function format()
5238

5339
/**
5440
* {@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.
5546
*/
5647
public function calculateDigit($baseNumber)
5748
{
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);
5956

6057
return "{$digit}";
6158
}

src/Cns/Temporary.php renamed to src/Cns/TemporaryCalculator.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use Brazanation\Documents\DigitCalculable;
66
use Brazanation\Documents\DigitCalculator;
77

8-
class Temporary implements DigitCalculable
8+
class TemporaryCalculator implements DigitCalculable
99
{
1010
/**
1111
* {@inheritdoc}

0 commit comments

Comments
 (0)