Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
TwigPositionExtension
0.00% covered (danger)
0.00%
0 / 8
0.00% covered (danger)
0.00%
0 / 2
6
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 1
2
 getFunctions
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3declare(strict_types=1);
4
5namespace App\Core\Layout;
6
7use Twig\Extension\AbstractExtension;
8use Twig\TwigFunction;
9
10/**
11 * Twig Extension for Layout Position Engine.
12 *
13 * Exposes {{ render_position('position_code', 'theme_name') }} function in Twig templates.
14 *
15 * @package App\Core\Layout
16 */
17final class TwigPositionExtension extends AbstractExtension
18{
19    /**
20     * TwigPositionExtension constructor.
21     *
22     * @param PositionManager $positionManager Layout position manager instance.
23     */
24    public function __construct(
25        private readonly PositionManager $positionManager
26    ) {
27    }
28
29    /**
30     * Returns registered Twig functions array.
31     *
32     * @return array<int, TwigFunction> Twig functions array.
33     */
34    public function getFunctions(): array
35    {
36        return [
37            new TwigFunction(
38                'render_position',
39                [$this->positionManager, 'renderPosition'],
40                ['is_safe' => ['html']]
41            ),
42        ];
43    }
44}