Completed
Push — master ( f4588e...60b2e1 )
by Maxime
02:53
created

NamespaceResolver   A

Complexity

Total Complexity 9

Size/Duplication

Total Lines 52
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
dl 0
loc 52
ccs 0
cts 35
cp 0
rs 10
c 0
b 0
f 0
wmc 9
lcom 1
cbo 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A modelClass() 0 4 1
A model() 0 10 2
A mapperClass() 0 4 1
A mapper() 0 10 2
A load() 0 13 3
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: mfrancois
5
 * Date: 05/09/2018
6
 * Time: 11:31
7
 */
8
9
namespace Distilleries\Contentful\Helpers;
10
11
12
use Distilleries\Contentful\Models\Base\ContentfulMapper;
13
use Distilleries\Contentful\Models\Base\ContentfulModel;
14
15
class NamespaceResolver
16
{
17
18
    public static function modelClass(string $model): ?string
19
    {
20
        return self::load('contentful.namespace.model', $model);
21
    }
22
23
    public static function model(string $model): ?ContentfulModel
24
    {
25
        $class = self::modelClass($model);
26
27
        if (!empty($class)) {
28
            return new $class;
29
        }
30
31
        return null;
32
    }
33
34
35
36
    public static function mapperClass(string $mapper): ?string
37
    {
38
        return self::load('contentful.namespace.mapper', $mapper);
39
    }
40
41
    public static function mapper(string $mapper): ?ContentfulMapper
42
    {
43
        $class = self::mapperClass($mapper);
44
45
        if (!empty($class)) {
46
            return new $class;
47
        }
48
49
        return null;
50
    }
51
52
53
    public static function load(string $key, string $element): ?string
54
    {
55
        foreach (config($key, []) as $namespace) {
56
            $modelClass = rtrim($namespace,
57
                    '\\') . '\\' . studly_case($element);
58
59
            if (class_exists($modelClass)) {
60
                return $modelClass;
61
            }
62
        }
63
64
        return null;
65
    }
66
}