• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ICanBoogie / View / 4118689638

pending completion
4118689638

push

github

Olivier Laviale
View overhaul

47 of 47 new or added lines in 5 files covered. (100.0%)

68 of 89 relevant lines covered (76.4%)

1.25 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

87.5
/lib/LayoutResolver/Basic.php
1
<?php
2

3
/*
4
 * This file is part of the ICanBoogie package.
5
 *
6
 * (c) Olivier Laviale <olivier.laviale@gmail.com>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11

12
namespace ICanBoogie\View\LayoutResolver;
13

14
use ICanBoogie\Render\Renderer;
15
use ICanBoogie\Render\TemplateName;
16
use ICanBoogie\Render\TemplateNotFound;
17
use ICanBoogie\Routing\Route;
18
use ICanBoogie\View\LayoutResolver;
19

20
use function str_starts_with;
21

22
final class Basic implements LayoutResolver
23
{
24
    public function __construct(
25
        private readonly Renderer $renderer
26
    ) {
27
    }
5✔
28

29
    public function resolve_layout(Route $route): string
30
    {
31
        return $this->from_route($route)
5✔
32
            ?? $this->from_page()
5✔
33
            ?? self::DEFAULT_LAYOUT;
5✔
34
    }
35

36
    private function from_route(Route $route): ?string
37
    {
38
        if (str_starts_with($route->action, self::ADMIN_ACTION_PREFIX)) {
5✔
39
            return self::ADMIN_LAYOUT;
2✔
40
        }
41

42
        if (
43
            $route->pattern == self::HOME_PATH &&
3✔
44
            $this->resolve_template(TemplateName::from(self::HOME_LAYOUT)->as_layout)
3✔
45
        ) {
46
            return self::HOME_LAYOUT;
1✔
47
        }
48

49
        return null;
2✔
50
    }
51

52
    private function from_page(): ?string
53
    {
54
        if ($this->resolve_template(TemplateName::from(self::PAGE_LAYOUT)->as_layout)) {
2✔
55
            return self::PAGE_LAYOUT;
1✔
56
        }
57

58
        return null;
1✔
59
    }
60

61
    private function resolve_template(string $name): ?string
62
    {
63
        try {
64
            return $this->renderer->resolve_template($name);
3✔
65
        } catch (TemplateNotFound) {
×
66
        }
67

68
        return null;
×
69
    }
70
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc