Passed
Push — master ( f9244b...ce4141 )
by 世昌
02:39 queued 14s
created

ModuleTemplateCompiler::getConfig()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace suda\application\template;
4
5
use suda\application\template\compiler\Tag;
6
use suda\application\template\compiler\Compiler;
7
8
/**
9
 * 可执行命令表达式
10
 *
11
 */
12
class ModuleTemplateCompiler extends Compiler
13
{
14
    /**
15
     * @var array
16
     */
17
    protected $config = [];
18
19
    /**
20
     * 定义的标签
21
     *
22
     * @var array
23
     */
24
    protected $tag = [
25
        'raw' => [
26
            '{{!', '}}',
27
            '<?php echo $code; ?>',
28
        ],
29
        'comment' => [
30
            '{--', '--}',
31
            '<?php /* $code */ ?>',
32
        ],
33
        'echo' => [
34
            '{{', '}}',
35
            '<?php echo htmlspecialchars($this->application->_($code), ENT_SUBSTITUTE | ENT_QUOTES | ENT_HTML5); ?>',
36
        ],
37
        'string' => [
38
            '{=', '}',
39
            '<?php echo htmlspecialchars($this->application->_("$code"), ENT_SUBSTITUTE | ENT_QUOTES | ENT_HTML5); ?>',
40
        ],
41
        'raw-string' => [
42
            '@{', '}',
43
            '<?php echo htmlspecialchars($code, ENT_SUBSTITUTE | ENT_QUOTES | ENT_HTML5); ?>',
44
        ],
45
        'event' => [
46
            '{:', '}',
47
            '<?php $this->application->event()->exec("$code", [$this]); ?>',
48
        ],
49
    ];
50
51
    /**
52
     * @return array
53
     */
54
    public function getConfig(): array
55
    {
56
        return $this->config;
57
    }
58
59
    /**
60
     * @param array $config
61
     */
62
    public function setConfig(array $config): void
63
    {
64
        $this->config = $config;
65
    }
66
67
    public function init()
68
    {
69
        $this->registerCommand(new ModuleTemplateCommand);
70
        foreach ($this->tag as $name => $value) {
71
            $open = $this->config[$name]['open'] ?? $value[0];
72
            $close = $this->config[$name]['close'] ?? $value[1];
73
            $this->registerTag(new Tag($name, $open, $close, $value[2]));
74
        }
75
    }
76
}
77