EloquentAwareResolver   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 22
Duplicated Lines 0 %

Importance

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

1 Method

Rating   Name   Duplication   Size   Complexity  
A resolve() 0 17 3
1
<?php
2
3
namespace Zebrainsteam\LaravelRepos\Resolvers;
4
5
use Illuminate\Database\Eloquent\Model;
6
use Repositories\Core\Contracts\ResolverInterface;
7
use Repositories\Core\Exceptions\CouldNotResolve;
8
use Repositories\Core\Contracts\RepositoryInterface;
9
use Zebrainsteam\LaravelRepos\EloquentRepository;
10
11
class EloquentAwareResolver implements ResolverInterface
12
{
13
    /**
14
     * @inheritDoc
15
     */
16
    public function resolve(string $className): RepositoryInterface
17
    {
18
        if (!class_exists($className)) {
19
            $exception = new CouldNotResolve("Class " . $className . " doesn't exist");
20
            $exception->setRepositoryCode($className);
21
22
            throw $exception;
23
        }
24
25
        if (in_array(Model::class, class_implements($className))) {
26
            $exception = new CouldNotResolve("The passed argument must be an instance of " . Model::class);
27
            $exception->setRepositoryCode($className);
28
29
            throw $exception;
30
        }
31
32
        return new EloquentRepository($className);
33
    }
34
}
35