DefinitionBuilder   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 11
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 6
dl 0
loc 11
rs 10
c 0
b 0
f 0
wmc 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A __callStatic() 0 9 2
1
<?php
2
declare(strict_types=1);
3
4
namespace Habemus\Definition;
5
6
use Closure;
7
use Habemus\Definition\Build\ArrayDefinition;
8
use Habemus\Definition\Build\ClassDefinition;
9
use Habemus\Definition\Build\FactoryDefinition;
10
use Habemus\Definition\Build\FnDefinition;
11
use Habemus\Definition\Build\ReferenceDefinition;
12
use Habemus\Definition\Build\RawDefinition;
13
use Habemus\Definition\Build\IterateDefinition;
14
use Habemus\Exception\InvalidDefinitionException;
15
16
/**
17
 * @method static ReferenceDefinition use(string $id, Closure $fn = null)
18
 * @method static ReferenceDefinition reference(string $id, Closure $fn = null)
19
 * @method static ReferenceDefinition entry(string $id, Closure $fn = null)
20
 * @method static RawDefinition raw(mixed $value)
21
 * @method static ClassDefinition class(string $class, array $args = [])
22
 * @method static FactoryDefinition factory($class, string $method, array $params = [], bool $static = false)
23
 * @method static ArrayDefinition array(array $arr, bool $recursive = false)
24
 * @method static FnDefinition fn(Closure $fn)
25
 * @method static IterateDefinition iterate(string ...$id)
26
 */
27
trait DefinitionBuilder
28
{
29
    public static function __callStatic($name, $arguments): Definition
30
    {
31
        $namespace = __NAMESPACE__ . "\\Build";
32
        $class = sprintf("%s\%sDefinition", $namespace, ucfirst($name));
33
        if (!class_exists($class)) {
34
            throw InvalidDefinitionException::unavailable($name);
35
        }
36
37
        return new $class(...$arguments);
38
    }
39
}
40