AdDirector   A
last analyzed

Complexity

Total Complexity 13

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 22
c 1
b 0
f 0
dl 0
loc 60
ccs 29
cts 29
cp 1
rs 10
wmc 13

6 Methods

Rating   Name   Duplication   Size   Complexity  
A gpt() 0 3 1
A displayScript() 0 10 3
A adLocation() 0 11 4
A configurationScript() 0 10 3
A managers() 0 4 1
A getManager() 0 5 1
1
<?php
2
3
namespace AdDirector;
4
5
use AdDirector\Contracts\AdManager;
6
7
class AdDirector
8
{
9 8
    public function gpt(): \AdDirector\GPT\AdGPT
10
    {
11 8
        return app('ad-gpt-manager');
12
    }
13
14 4
    protected function getManager(?string $manager = null): ?AdManager
15
    {
16 4
        return match ($manager) {
17 4
            'gpt'   => $this->gpt(),
18 4
            default => null,
19 4
        };
20
    }
21
22
    /**
23
     * @return \AdDirector\Contracts\AdManager[]
24
     */
25 2
    protected function managers(): array
26
    {
27 2
        return [
28 2
            $this->gpt(),
29 2
        ];
30
    }
31
32 4
    public function configurationScript(?string $manager = null): string
33
    {
34 4
        $resultString = '';
35 4
        $managers     = is_null($manager) ? $this->managers() : array_filter([$this->getManager($manager)]);
36
        /** @var \AdDirector\Contracts\AdManager $manager */
37 4
        foreach ($managers as $manager) {
38 4
            $resultString .= $manager->configurationScript().PHP_EOL;
39
        }
40
41 4
        return $resultString;
42
    }
43
44 4
    public function displayScript(?string $manager = null): string
45
    {
46 4
        $resultString = '';
47 4
        $managers     = is_null($manager) ? $this->managers() : array_filter([$this->getManager($manager)]);
48
        /** @var \AdDirector\Contracts\AdManager $manager */
49 4
        foreach ($managers as $manager) {
50 4
            $resultString .= $manager->displayScript().PHP_EOL;
51
        }
52
53 4
        return $resultString;
54
    }
55
56 5
    public function adLocation(string $name, ?string $manager = null): string
57
    {
58 5
        $managers = is_null($manager) ? $this->managers() : array_filter([$this->getManager($manager)]);
59
        /** @var \AdDirector\Contracts\AdManager $manager */
60 5
        foreach ($managers as $manager) {
61 5
            if ($resultString = $manager->adLocation($name)) {
62 4
                return $resultString;
63
            }
64
        }
65
66 1
        return '';
67
    }
68
}
69