Completed
Pull Request — 0.0.35 (#659)
by thomas
26:42
created

ScriptHashDecorator   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Test Coverage

Coverage 57.14%

Importance

Changes 0
Metric Value
dl 0
loc 37
ccs 4
cts 7
cp 0.5714
rs 10
c 0
b 0
f 0
wmc 3
lcom 1
cbo 1

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 2
A getScriptType() 0 4 1
1
<?php
2
3
namespace BitWasp\Bitcoin\Key\KeyToScript\Decorator;
4
5
use BitWasp\Bitcoin\Key\KeyToScript\Factory\KeyToScriptDataFactory;
6
use BitWasp\Bitcoin\Key\KeyToScript\ScriptDataFactoryInterface;
7
8
abstract class ScriptHashDecorator implements ScriptDataFactoryInterface
9
{
10
    /**
11
     * @var KeyToScriptDataFactory
12
     */
13
    protected $scriptDataFactory;
14
15
    /**
16
     * @var string[]
17
     */
18
    protected $allowedScriptTypes = [];
19
20
    /**
21
     * @var string
22
     */
23
    protected $decorateType;
24
25
    /**
26
     * P2shScriptDecorator constructor.
27
     * @param KeyToScriptDataFactory $scriptDataFactory
28
     */
29 1
    public function __construct(KeyToScriptDataFactory $scriptDataFactory)
30
    {
31 1
        if (!in_array($scriptDataFactory->getScriptType(), $this->allowedScriptTypes, true)) {
32
            throw new \InvalidArgumentException("Unsupported key-to-script factory for this script-hash type.");
33
        }
34 1
        $this->scriptDataFactory = $scriptDataFactory;
35 1
    }
36
37
    /**
38
     * @return string
39
     */
40
    public function getScriptType()
41
    {
42
        return sprintf("%s|%s", $this->decorateType, $this->scriptDataFactory->getScriptType());
43
    }
44
}
45