Passed
Push — master ( 471523...a46036 )
by Arthur
13:15
created

Transformer::transformResource()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
ccs 0
cts 2
cp 0
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: arthur
5
 * Date: 29.10.18
6
 * Time: 09:35.
7
 */
8
9
namespace Foundation\Abstracts\Transformers;
10
11
use Foundation\Contracts\Transformable;
12
use Illuminate\Database\Eloquent\Collection;
13
use Illuminate\Database\Eloquent\Model;
14
use Illuminate\Http\Resources\Json\JsonResource;
15
16
abstract class Transformer extends JsonResource implements Transformable
17
{
18
    use IncludesRelations;
19
20
    public $include = [];
21
22
    public $available = [];
23
24 21
    public function __construct($resource)
25
    {
26 21
        parent::__construct(self::loadRelations($resource));
27 21
    }
28
29 15
    public static function resource($model): self
30
    {
31 15
        return new static($model);
32
    }
33
34 21
    private static function loadRelations($resource)
35
    {
36 21
        if ($resource instanceof Model || $resource instanceof Collection) {
37 20
            $relations = call_class_function(static::class, 'compileRelations');
38 20
            $resource->loadMissing(array_keys($relations));
39
        }
40 21
        return $resource;
41
    }
42
43 12
    public static function collection($resource)
44
    {
45 12
        return new AnonymousTransformerCollection(self::loadRelations($resource), static::class);
46
    }
47
48 4
    public function serialize()
49
    {
50 4
        return json_decode(json_encode($this->jsonSerialize()), true);
51
    }
52
53 18
    public function toArray($request)
54
    {
55 18
        return array_merge($this->transformResource(), $this->includeRelations());
56
    }
57
58
    public function transformResource()
59
    {
60
        return [];
61
    }
62
}
63