# Template-engine ### 模板继承 模板继承通过extend标签与block标签配合使用实现。 一个最简单的继承 ``` // Base/layout.html(父级模板) Title // Index/index.html

内容主体

``` ### 模板标签 内置一些常用标签 1. php php标签。此标签为闭合标签,标签内的内容将被解析为原生php代码执行。 ``` echo '你好'; ``` 2. if if标签。此标签为闭合标签,condition属性为if的条件,属性列表:condition。 ``` // do something... ``` 3. else else标签。此标签为自闭合标签,可选属性condition,存在condition属性则被解析为elseif,属性列表:condition(可选)。 ``` // do something... // do something... // do something... // do something... ``` 4. loop 循环标签。此标签为闭合标签,属性列表:name、id、key(可选)。 ``` {item.id} {i}、{item.id} ``` 5. assign 赋值标签,在模板中创建新的php变量。此标签为自闭合标签,属性列表:name、value。 ``` ``` 6. original 此标签为闭合标签。original标签中的内容不会被编译。 ``` {item.id} ``` 上例,loop标签会被原样输出。 7. switch 此标签为闭合标签。 ``` $name的值为0 $name的值为1 默认 ``` 8. include 在当前模板中加载其他模板文件。 9. 变量、函数调用 输出 ``` {$username} {$user.name} {$user['name']} ``` 函数调用 ``` {:mb_substr($username, 0, 3, 'utf8')} {$username|mb_substr=0,3,'utf8'} ``` ### 自定义标签 新建自定义标签库类文件Extend.php,可选择继承TagLib类(支持点语法)。 #### 闭合标签 ``` class Extend extends TagLib { public $tags = [ 'test' => ['attr' => 'start,length,id', 'close' => 1] ]; public function _test($attr, $content) { $parse = ''; $parse .= $content; $parse .= ''; return $parse; } } ``` 类创建完成后,调用Engine中的loadTaglib方法加载Extend类 ``` $config = [ 'ext' => 'html', 'dir' => './templates/', 'left' => '<', 'right' => '>', ]; $engine = Engine::instance($config); $engine->loadTaglib('extend', Extend::class); ``` 添加完成后即可在模板中使用 ``` {$test} ``` #### 自闭合标签 添加一个描述 ``` 'say' => ['attr' => 'what', 'close' => 0] ``` 新建_say方法 ``` public function _say($attr) { return ""; } ``` 模板调用 ``` ```