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

AbstractFactory::provides()   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 1
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