TwigFactory   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Test Coverage

Coverage 87.5%

Importance

Changes 3
Bugs 0 Features 0
Metric Value
eloc 10
c 3
b 0
f 0
dl 0
loc 37
ccs 7
cts 8
cp 0.875
rs 10
wmc 3

2 Methods

Rating   Name   Duplication   Size   Complexity  
A create() 0 7 2
A __construct() 0 8 1
1
<?php
2
3
/**
4
 * This file is part of Cecil.
5
 *
6
 * (c) Arnaud Ligny <[email protected]>
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
declare(strict_types=1);
13
14
namespace Cecil\Renderer\Twig;
15
16
use Cecil\Builder;
17
use Cecil\Config;
18
use Cecil\Renderer\Twig;
19
use Psr\Log\LoggerInterface;
20
21
/**
22
 * Factory to create and configure the Twig Renderer.
23
 *
24
 * This factory allows creating the renderer with all its dependencies
25
 * in a lazy manner (only when needed).
26
 */
27
class TwigFactory
28
{
29
    private Config $config;
30
31
    /**
32
     * Logger instance reserved for potential future logging needs.
33
     *
34
     * Currently stored to preserve the constructor signature and allow
35
     * easy integration of logging without introducing breaking changes.
36
     */
37
    private LoggerInterface $logger;
38
39
    private Builder $builder;
40
41 1
    public function __construct(
42
        Config $config,
43
        LoggerInterface $logger,
44
        Builder $builder
45
    ) {
46 1
        $this->config = $config;
47 1
        $this->logger = $logger;
48 1
        $this->builder = $builder;
49
    }
50
51
    /**
52
     * Creates a Twig renderer instance.
53
     *
54
     * @param string|array|null $templatesPath Template path(s) (uses default config if null)
55
     * @return Twig Configured renderer instance
56
     */
57 1
    public function create(string|array|null $templatesPath = null): Twig
58
    {
59 1
        if ($templatesPath === null) {
60
            $templatesPath = $this->config->getLayoutsPath();
61
        }
62
63 1
        return new Twig($this->builder, $templatesPath);
64
    }
65
}
66