Completed
Push — master ( 4f6bd4...be5be4 )
by Arne
08:11
created

AbstractPhpHashAlgorithm   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 42
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

Changes 0
Metric Value
wmc 4
lcom 1
cbo 0
dl 0
loc 42
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A initialize() 0 4 1
A digest() 0 6 1
A finalize() 0 6 1
A getPhpHashAlgorithmName() 0 4 1
1
<?php
2
3
namespace Storeman\Hash\Algorithm;
4
5
abstract class AbstractPhpHashAlgorithm implements HashAlgorithmInterface
6
{
7
    protected $context;
8
9
    /**
10
     * {@inheritdoc}
11
     */
12
    public function initialize(): void
13
    {
14
        $this->context = hash_init($this->getPhpHashAlgorithmName());
15
    }
16
17
    /**
18
     * {@inheritdoc}
19
     */
20
    public function digest(string $buffer): void
21
    {
22
        assert($this->context !== null, sprintf('Calling %s() on uninitialized context.', __FUNCTION__));
23
24
        hash_update($this->context, $buffer);
25
    }
26
27
    /**
28
     * {@inheritdoc}
29
     */
30
    public function finalize(): string
31
    {
32
        assert($this->context !== null, sprintf('Calling %s() on uninitialized context.', __FUNCTION__));
33
34
        return hash_final($this->context);
35
    }
36
37
    /**
38
     * Allows to override the hash algo name.
39
     *
40
     * @return string
41
     */
42
    protected function getPhpHashAlgorithmName(): string
43
    {
44
        return $this->getName();
45
    }
46
}
47