ModelResolver   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 43
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 1

Importance

Changes 0
Metric Value
dl 0
loc 43
rs 10
c 0
b 0
f 0
wmc 8
lcom 1
cbo 1

5 Methods

Rating   Name   Duplication   Size   Complexity  
A setModel() 0 4 1
A setTable() 0 4 1
A getModel() 0 8 2
A getTable() 0 8 2
A make() 0 9 2
1
<?php
2
3
namespace Fenos\Notifynder\Resolvers;
4
5
use Illuminate\Support\Str;
6
7
class ModelResolver
8
{
9
    protected $models = [];
10
    protected $tables = [];
11
12
    public function setModel($class, $model)
13
    {
14
        $this->models[$class] = $model;
15
    }
16
17
    public function setTable($class, $table)
18
    {
19
        $this->tables[$class] = $table;
20
    }
21
22
    public function getModel($class)
23
    {
24
        if (isset($this->models[$class])) {
25
            return $this->models[$class];
26
        }
27
28
        return $class;
29
    }
30
31
    public function getTable($class)
32
    {
33
        if (isset($this->tables[$class])) {
34
            return $this->tables[$class];
35
        }
36
37
        return str_replace('\\', '', Str::snake(Str::plural(class_basename($this->getModel($class)))));
38
    }
39
40
    public function make($class, array $attributes = [])
41
    {
42
        $model = $this->getModel($class);
43
        if (! class_exists($model)) {
44
            throw new \ReflectionException("Class {$model} does not exist");
45
        }
46
47
        return new $model($attributes);
48
    }
49
}
50