Completed
Push — 2.0 ( 1bba9f...1e5061 )
by David
9s
created

RendererServiceProvider::createPackageRenderers()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
nc 1
cc 1
nop 0
1
<?php
2
3
4
namespace Mouf\Html\Renderer;
5
6
use TheCodingMachine\MiddlewareListServiceProvider;
7
use TheCodingMachine\MiddlewareOrder;
8
use Psr\Container\ContainerInterface;
9
use Psr\SimpleCache\CacheInterface;
10
use TheCodingMachine\Funky\Annotations\Factory;
11
use TheCodingMachine\Funky\Annotations\Tag;
12
use TheCodingMachine\Funky\ServiceProvider;
13
14
/**
15
 * This class can be extended to implement easily a service provider that creates "package level" renderers.
16
 */
17
class RendererServiceProvider extends ServiceProvider
18
{
19
    /**
20
     * @Factory(aliases={RendererInterface::class})
21
     * @return ChainRenderer
22
     */
23
    public static function createChainRenderer(ContainerInterface $container, CacheInterface $cache): ChainRenderer
24
    {
25
        return new ChainRenderer(
26
            $container,
27
            \iterator_to_array($container->get('customRenderers')),
28
            \iterator_to_array($container->get('packageRenderers')),
29
            $cache,
30
            'chainRenderer'
31
        );
32
    }
33
34
    /**
35
     * @Factory(name="customRenderer", tags={@Tag(name="customRenderers")})
36
     * @return FileBasedRenderer
37
     */
38
    public static function createCustomRenderer(ContainerInterface $container, CacheInterface $cache, \Twig_Environment $twig): FileBasedRenderer
39
    {
40
        return new FileBasedRenderer(\ComposerLocator::getRootPath().'/src/templates', $cache, $container, $twig);
41
    }
42
43
    /**
44
     * @Factory(name="packageRenderers")
45
     * @return \SplPriorityQueue
46
     */
47
    public static function createPackageRenderers(): \SplPriorityQueue
48
    {
49
        return new \SplPriorityQueue();
50
    }
51
52
    /**
53
     * @Factory(name="customRenderers")
54
     * @return \SplPriorityQueue
55
     */
56
    public static function createCustomRenderers(): \SplPriorityQueue
57
    {
58
        return new \SplPriorityQueue();
59
    }
60
61
    /**
62
     * @Factory(tags={@Tag(name=MiddlewareListServiceProvider::MIDDLEWARES_QUEUE, priority=MiddlewareOrder::UTILITY_EARLY)})
63
     */
64
    public static function createMiddleware(RendererInterface $renderer): InitRendererFacadeMiddleware
65
    {
66
        return new InitRendererFacadeMiddleware($renderer);
67
    }
68
}
69