Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
85.71% covered (warning)
85.71%
6 / 7
50.00% covered (danger)
50.00%
1 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
Panel
85.71% covered (warning)
85.71%
6 / 7
50.00% covered (danger)
50.00%
1 / 2
5.07
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 strings
83.33% covered (warning)
83.33%
5 / 6
0.00% covered (danger)
0.00%
0 / 1
4.07
1<?php
2
3declare(strict_types=1);
4
5namespace Cosray\Config;
6
7final class Panel
8{
9    /** @var list<non-empty-string>|null */
10    private ?array $themeCache = null;
11
12    public function __construct(
13        private readonly \Cosray\Config $config,
14    ) {}
15
16    /** @var non-empty-string */
17    public string $path {
18        get => $this->config->get('path.panel');
19    }
20
21    /** @var list<non-empty-string> */
22    public array $theme {
23        get => $this->themeCache ??= self::strings($this->config->get('panel.theme'));
24    }
25
26    /** @var ?non-empty-string */
27    public ?string $logo {
28        get => $this->config->get('panel.logo');
29    }
30
31    /** @return list<non-empty-string> */
32    private static function strings(mixed $value): array
33    {
34        if ($value === null) {
35            return [];
36        }
37
38        if (is_string($value)) {
39            $value = trim($value);
40
41            return $value === '' ? [] : [$value];
42        }
43
44        return array_values($value);
45    }
46}