Completed
Branch 2.x (59be6b)
by Julián
11:20
created

ParameterTrait   A

Complexity

Total Complexity 4

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

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

4 Methods

Rating   Name   Duplication   Size   Complexity  
A assignParameters() 0 16 3
getDefinedParameters() 0 1 ?
A getDefaultParameters() 0 4 1
getRequiredParameters() 0 1 ?
1
<?php
2
3
/*
4
 * Unified push notification services abstraction (http://github.com/juliangut/tify).
5
 *
6
 * @license BSD-3-Clause
7
 * @link https://github.com/juliangut/tify
8
 * @author Julián Gutiérrez <[email protected]>
9
 */
10
11
namespace Jgut\Tify\Adapter\Traits;
12
13
use Jgut\Tify\Exception\AdapterException;
14
use Jgut\Tify\ParameterTrait as ParamsTrait;
15
use Symfony\Component\OptionsResolver\Exception\MissingOptionsException;
16
use Symfony\Component\OptionsResolver\OptionsResolver;
17
18
/**
19
 * Parameter aware trait.
20
 */
21
trait ParameterTrait
22
{
23
    use ParamsTrait;
24
25
    /**
26
     * Assign adapter parameters.
27
     *
28
     * @param array $parameters
29
     *
30
     * @throws AdapterException
31
     */
32
    protected function assignParameters(array $parameters = [])
33
    {
34
        $parametersResolver = new OptionsResolver;
35
36
        $parametersResolver->setDefined($this->getDefinedParameters());
37
        $parametersResolver->setDefaults($this->getDefaultParameters());
38
        $parametersResolver->setRequired($this->getRequiredParameters());
39
40
        try {
41
            $this->parameters = $parametersResolver->resolve($parameters);
42
        } catch (MissingOptionsException $exception) {
43
            throw new AdapterException(sprintf('Missing parameters on "%s"', static::class));
44
        } catch (\Exception $exception) {
45
            throw new AdapterException('Invalid parameter provided');
46
        }
47
    }
48
49
    /**
50
     * Get the list of defined parameters.
51
     *
52
     * @return array
53
     */
54
    abstract protected function getDefinedParameters();
55
56
    /**
57
     * Get the list of default parameters.
58
     *
59
     * @return array
60
     */
61
    protected function getDefaultParameters()
62
    {
63
        return [];
64
    }
65
66
    /**
67
     * Get the list of required parameters.
68
     *
69
     * @return array
70
     */
71
    abstract protected function getRequiredParameters();
72
}
73