Code Coverage
 
Lines
Branches
Paths
Functions and Methods
Classes and Traits
Total
71.43% covered (warning)
71.43%
5 / 7
42.86% covered (danger)
42.86%
3 / 7
60.00% covered (warning)
60.00%
3 / 5
75.00% covered (warning)
75.00%
3 / 4
CRAP
0.00% covered (danger)
0.00%
0 / 1
FrontendUrlExtension
71.43% covered (warning)
71.43%
5 / 7
42.86% covered (danger)
42.86%
3 / 7
60.00% covered (warning)
60.00%
3 / 5
75.00% covered (warning)
75.00%
3 / 4
6.60
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
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 getFunctions
100.00% covered (success)
100.00%
3 / 3
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 url
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 path
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
6
1<?php
2
3namespace App\Shared\Infrastructure\Twig;
4
5/**
6 * @author Wilhelm Zwertvaegher
7 */
8
9use App\Shared\Infrastructure\Service\FrontendUrlGenerator;
10use Twig\Extension\AbstractExtension;
11use Twig\TwigFunction;
12
13class FrontendUrlExtension extends AbstractExtension
14{
15    public function __construct(private readonly FrontendUrlGenerator $generator)
16    {
17    }
18
19    public function getFunctions(): array
20    {
21        return [
22            new TwigFunction('frontend_url', [$this, 'url'], ['is_safe' => ['html']]),
23        ];
24    }
25
26    /**
27     * @param string $frontend
28     * @param string $routeName
29     * @param array<string, string|int> $params
30     * @param array<string, string|int> $queryParams
31     * @return string
32     */
33    public function url(string $frontend, string $routeName, array $params = [], array $queryParams = []): string
34    {
35        return $this->generator->generate($frontend, $routeName, $params, $queryParams);
36    }
37
38    /**
39     * @param string $frontend
40     * @param string $routeName
41     * @param array<string, string|int> $params
42     * @param array<string, string|int> $queryParams
43     * @return string
44     */
45    public function path(string $frontend, string $routeName, array $params = [], array $queryParams = []): string
46    {
47        $url = $this->generator->generate($frontend, $routeName, $params, $queryParams);
48        return parse_url($url, PHP_URL_PATH) . (parse_url($url, PHP_URL_QUERY) ? '?' . parse_url($url, PHP_URL_QUERY) : '');
49    }
50}