ClassResolver::setNamespace()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
namespace Humweb\Features\Resolvers;
4
5
/**
6
 * ClassResolver.
7
 */
8
class ClassResolver
9
{
10
    protected $namespace = '';
11
    protected $suffix    = '';
12
13
14
    /**
15
     * @param string $class
16
     *
17
     * @return string
18
     */
19
    public function resolve($class)
20
    {
21
        $class = $this->formatClassName($class);
22
23
        $assembledClass = '\\'.trim($this->getNamespace(), '\\').'\\'.$class.$this->getSuffix();
24
25
        if (class_exists($assembledClass)) {
26
            return $assembledClass;
27
        }
28
29
        if (class_exists($class)) {
30
            return $class;
31
        }
32
33
        throw new \InvalidArgumentException('Unable to resolve class: '.$class.' or '.$assembledClass);
34
    }
35
36
37
    /**
38
     * Format class name to "studly case"
39
     *
40
     * @param string $name
41
     *
42
     * @return string
43
     */
44
    protected function formatClassName($name)
45
    {
46
        $name = ucwords(str_replace(['-', '_'], ' ', $name));
47
48
        return str_replace(' ', '', $name);
49
    }
50
51
52
    /**
53
     * @param mixed $namespace
54
     *
55
     * @return ClassResolver
56
     */
57
    public function setNamespace($namespace)
58
    {
59
        $this->namespace = $namespace;
60
61
        return $this;
62
    }
63
64
65
    /**
66
     * @return mixed
67
     */
68
    public function getNamespace()
69
    {
70
        return $this->namespace;
71
    }
72
73
74
    /**
75
     * @param string $suffix
76
     *
77
     * @return ClassResolver
78
     */
79
    public function setSuffix($suffix)
80
    {
81
        $this->suffix = $suffix;
82
83
        return $this;
84
    }
85
86
87
    /**
88
     * @return string
89
     */
90
    public function getSuffix()
91
    {
92
        return $this->suffix;
93
    }
94
}
95