EloquentAwareResolver::resolve()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 17
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 2
Metric Value
cc 3
eloc 9
c 2
b 0
f 2
nc 3
nop 1
dl 0
loc 17
rs 9.9666
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