NameFactory   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 48
Duplicated Lines 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
wmc 3
eloc 16
c 1
b 0
f 0
dl 0
loc 48
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A from() 0 12 1
A addCallbacks() 0 11 1
A newName() 0 5 1
1
<?php
2
3
namespace ByTIC\Namefy;
4
5
use ByTIC\Namefy\Strategies\AbstractStrategy;
6
7
/**
8
 * Class NameFactory
9
 * @package ByTIC\Namefy
10
 */
11
class NameFactory
12
{
13
    /**
14
     * @param $slug
15
     * @param $type
16
     * @param AbstractStrategy $strategy
17
     * @return Name
18
     */
19
    public static function from($slug, $type, AbstractStrategy $strategy): Name
20
    {
21
        $name = new Name();
22
23
        $resource = function () use ($slug, $type, $strategy, $name) {
24
            return $strategy->from($type, $slug, $name);
25
        };
26
        $name->setResource($resource);
27
28
        static::addCallbacks($name, $strategy);
29
30
        return $name;
31
    }
32
33
    /**
34
     * @param $resource
35
     * @return Name
36
     */
37
    protected static function newName($resource): Name
38
    {
39
        $name = new Name();
40
        $name->setResource($resource);
41
        return $name;
42
    }
43
44
    /**
45
     * @param Name $name
46
     * @param $strategy
47
     */
48
    protected static function addCallbacks(Name &$name, $strategy)
49
    {
50
        $name->setModel(
51
            function () use ($name, $strategy) {
52
                return $strategy->to('model', $name);
53
            }
54
        );
55
56
        $name->setController(
57
            function () use ($name, $strategy) {
58
                return $strategy->to('controller', $name);
59
            }
60
        );
61
    }
62
}
63