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

ParameterTrait::getDefaultParameters()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 0
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