Links::action()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nc 1
nop 1
dl 0
loc 7
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Spatie\ResourceLinks;
4
5
use Illuminate\Support\Collection;
6
use Spatie\ResourceLinks\LinkTypes\ActionLinkType;
7
use Spatie\ResourceLinks\LinkTypes\ControllerLinkType;
8
9
class Links
10
{
11
    /** @var \Illuminate\Support\Collection */
12
    private $linkTypes;
13
14
    public function __construct()
15
    {
16
        $this->linkTypes = new Collection();
17
    }
18
19
    /**
20
     * @param string $controller
21
     *
22
     * @return \Spatie\ResourceLinks\LinkTypes\ControllerLinkType|\Spatie\ResourceLinks\LinkTypes\ActionLinkType
23
     */
24
    public function controller(string $controller)
25
    {
26
        $linkType = method_exists($controller, '__invoke')
27
            ? ActionLinkType::make([$controller])
28
            : ControllerLinkType::make($controller);
29
30
        $this->linkTypes[] = $linkType;
31
32
        return $linkType;
33
    }
34
35
    public function action(array $action): ActionLinkType
36
    {
37
        $actionLinkType = ActionLinkType::make($action);
38
39
        $this->linkTypes[] = $actionLinkType;
40
41
        return $actionLinkType;
42
    }
43
44
    public function links(Links $links)
45
    {
46
        $this->linkTypes = $this->linkTypes->merge(
47
            $links->getLinkTypes()
48
        );
49
    }
50
51
    public function getLinkTypes(): Collection
52
    {
53
        return $this->linkTypes;
54
    }
55
}
56