Completed
Push — master ( c5a3b4...fa0d52 )
by Arne
01:49
created

AbstractFactory   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 22
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Importance

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

2 Methods

Rating   Name   Duplication   Size   Complexity  
A provides() 0 4 1
A create() 0 9 2
1
<?php
2
3
namespace Archivr;
4
5
abstract class AbstractFactory
6
{
7
    /**
8
     * @var array
9
     */
10
    protected $factoryMap = [];
11
12
    public function provides(string $name): bool
13
    {
14
        return isset($this->factoryMap[$name]);
15
    }
16
17
    public function create(string $name, ...$params)
18
    {
19
        if (!isset($this->factoryMap[$name]))
20
        {
21
            throw new \InvalidArgumentException(sprintf("FactoryContainer %s does not provide %s.", get_class($this), $name));
22
        }
23
24
        return call_user_func_array($this->factoryMap[$name], $params);
25
    }
26
}
27