NamespaceResolver   A
last analyzed

Complexity

Total Complexity 10

Size/Duplication

Total Lines 76
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 17
c 1
b 0
f 0
dl 0
loc 76
ccs 0
cts 34
cp 0
rs 10
wmc 10

5 Methods

Rating   Name   Duplication   Size   Complexity  
A modelClass() 0 3 1
A load() 0 10 3
A mapper() 0 9 2
A model() 0 10 3
A mapperClass() 0 3 1
1
<?php
2
3
namespace Distilleries\Contentful\Helpers;
4
5
use Illuminate\Support\Str;
6
use Distilleries\Contentful\Models\Base\ContentfulModel;
7
use Distilleries\Contentful\Models\Base\ContentfulMapper;
8
9
class NamespaceResolver
10
{
11
    /**
12
     * Resolve model classname.
13
     *
14
     * @param  string  $model
15
     * @return string|null
16
     */
17
    public static function modelClass(string $model): ?string
18
    {
19
        return static::load('contentful.namespace.model', $model);
20
    }
21
22
    /**
23
     * Resolve model.
24
     *
25
     * @param  string  $model
26
     * @return \Distilleries\Contentful\Models\Base\ContentfulModel|null
27
     */
28
    public static function model(string $model): ?ContentfulModel
29
    {
30
        $class = static::modelClass($model);
31
32
        if (! empty($class)) {
33
            $model = new $class;
34
            return $model instanceof ContentfulModel ? $model : null;
35
        }
36
37
        return null;
38
    }
39
40
    /**
41
     * Resolve mapper classname.
42
     *
43
     * @param  string  $mapper
44
     * @return string|null
45
     */
46
    public static function mapperClass(string $mapper): ?string
47
    {
48
        return static::load('contentful.namespace.mapper', $mapper);
49
    }
50
51
    /**
52
     * Resolve mapper.
53
     *
54
     * @param  string  $mapper
55
     * @return \Distilleries\Contentful\Models\Base\ContentfulMapper|null
56
     */
57
    public static function mapper(string $mapper): ?ContentfulMapper
58
    {
59
        $class = static::mapperClass($mapper);
60
61
        if (! empty($class)) {
62
            return new $class;
63
        }
64
65
        return null;
66
    }
67
68
    /**
69
     * Load given namespace + class.
70
     *
71
     * @param  string  $key
72
     * @param  string  $element
73
     * @return string|null
74
     */
75
    public static function load(string $key, string $element): ?string
76
    {
77
        foreach (config($key, []) as $namespace) {
78
            $modelClass = rtrim($namespace, '\\') . '\\' . ltrim(Str::studly($element), '\\');
79
            if (class_exists($modelClass)) {
80
                return $modelClass;
81
            }
82
        }
83
84
        return null;
85
    }
86
}
87