Completed
Push — master ( 22bc57...1ce92a )
by
unknown
29:24 queued 15:51
created

src/PlatesExtension.php (1 issue)

Severity

Upgrade to new PHP Analysis Engine

These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more

1
<?php
2
3
namespace League\Plates;
4
5
final class PlatesExtension implements Extension
6
{
7
    public function register(Engine $plates) {
8
        $c = $plates->getContainer();
9
10
        $c->add('config', [
11
            'validate_paths' => true,
12
            'php_extensions' => ['php', 'phtml'],
13
            'image_extensions' => ['png', 'jpg'],
14
        ]);
15
        $c->addComposed('compose', function() { return []; });
16
        $c->add('fileExists', function($c) {
0 ignored issues
show
The parameter $c is not used and could be removed.

This check looks from parameters that have been defined for a function or method, but which are not used in the method body.

Loading history...
17
            return 'file_exists';
18
        });
19
        $c->add('renderTemplate', function($c) {
20
            $rt = new RenderTemplate\FileSystemRenderTemplate([
21
                [
22
                    Template\matchExtensions($c->get('config')['php_extensions']),
23
                    new RenderTemplate\PhpRenderTemplate($c->get('renderTemplate.bind'))
24
                ],
25
                [
26
                    Template\matchExtensions($c->get('config')['image_extensions']),
27
                    RenderTemplate\MapContentRenderTemplate::base64Encode(new RenderTemplate\StaticFileRenderTemplate())
28
                ],
29
                [
30
                    Template\matchStub(true),
31
                    new RenderTemplate\StaticFileRenderTemplate(),
32
                ]
33
            ]);
34
            if ($c->get('config')['validate_paths']) {
35
                $rt = new RenderTemplate\ValidatePathRenderTemplate($rt, $c->get('fileExists'));
36
            }
37
            $rt = array_reduce($c->get('renderTemplate.factories'), function($rt, $create) {
38
                return $create($rt);
39
            }, $rt);
40
            $rt = new RenderTemplate\ComposeRenderTemplate($rt, $c->get('compose'));
41
            return $rt;
42
        });
43
        $c->add('renderTemplate.bind', function() {
44
            return Util\id();
45
        });
46
        $c->add('renderTemplate.factories', function() {
47
            return [];
48
        });
49
50
        $plates->addMethods([
51
            'pushComposers' => function(Engine $e, $def_composer) {
52
                $e->getContainer()->wrapComposed('compose', function($composed, $c) use ($def_composer) {
53
                    return array_merge($composed, $def_composer($c));
54
                });
55
            },
56
            'unshiftComposers' => function(Engine $e, $def_composer) {
57
                $e->getContainer()->wrapComposed('compose', function($composed, $c) use ($def_composer) {
58
                    return array_merge($def_composer($c), $composed);
59
                });
60
            },
61
            'addConfig' => function(Engine $e, array $config) {
62
                $e->getContainer()->merge('config', $config);
63
            },
64
            /** merges in config values, but will defer to values already set in the config */
65
            'defineConfig' => function(Engine $e, array $config_def) {
66
                $config = $e->getContainer()->get('config');
67
                $e->getContainer()->add('config', array_merge($config_def, $config));
68
            },
69
        ]);
70
    }
71
}
72