1 Star 0 Fork 0

TOP糯米/Template-engine

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

Template-engine

模板继承

模板继承通过extend标签与block标签配合使用实现。 一个最简单的继承

// Base/layout.html(父级模板)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<block name="body"></block>
</body>
</html>

// Index/index.html

<extend file="Base/layout" />
<block name="body">
    <h3>内容主体</h3>
</block>

模板标签

内置一些常用标签

  1. php

php标签。此标签为闭合标签,标签内的内容将被解析为原生php代码执行。

<php>
    echo '你好';
</php>
  1. if

if标签。此标签为闭合标签,condition属性为if的条件,属性列表:condition。

<if condition="$age eq 10">
    // do something...
</if>
  1. else

else标签。此标签为自闭合标签,可选属性condition,存在condition属性则被解析为elseif,属性列表:condition(可选)。

<if condition="$age eq 10">
    // do something...
<else />
    // do something...
</if>

<if condition="$age eq 10">
    // do something...
<else condition="$age eq 20" />
    // do something...
</if>
  1. loop

循环标签。此标签为闭合标签,属性列表:name、id、key(可选)。

<loop name="lists" id="item">
    {item.id}
</loop>

<loop name="lists" id="item" key="i">
    {i}、{item.id}
</loop>
  1. assign

赋值标签,在模板中创建新的php变量。此标签为自闭合标签,属性列表:name、value。

<assign name="username" value="TOP糯米" />
  1. original

此标签为闭合标签。original标签中的内容不会被编译。

<original>
    <loop name="lists" id="item">
        {item.id}
    </loop>
</original>

上例,loop标签会被原样输出。

  1. switch

此标签为闭合标签。

<assign name="value" value="1" />
<switch name="value">
    <case value="0">
        $name的值为0
    </case>
    <case value="1">
        $name的值为1
    </case>
    <case>默认</case>
</switch>
  1. include

在当前模板中加载其他模板文件。

  1. 变量、函数调用

输出

{$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 = '<?php for ($' . $attr['id'] . ' = ' . $attr['start'] . '; $' . $attr['id'];
        $parse .=  ' < ' . $attr['start'] . ' + ' . $attr['length'] . '; ';
        $parse .= '$' . $attr['id'] . '++): ?>';
        $parse .= $content;
        $parse .= '<?php endfor; ?>';
        return $parse;
    }
}

类创建完成后,调用Engine中的loadTaglib方法加载Extend类

$config = [
    'ext' => 'html',
    'dir' => './templates/',
    'left' => '<',
    'right' => '>',
];
$engine = Engine::instance($config);
$engine->loadTaglib('extend', Extend::class);

添加完成后即可在模板中使用

<extend:test start="1" length="10" id="test">
    {$test}
</extend:test>

自闭合标签

添加一个描述

'say' => ['attr' => 'what', 'close' => 0]

新建_say方法

public function _say($attr)
{
    return "<?php echo '{$attr['what']}'; ?>";
}

模板调用

<extend:say what="Hello world!" />

空文件

简介

造轮子之模板引擎 展开 收起
PHP 等 2 种语言
取消

发行版

暂无发行版

贡献者 (1)

全部

近期动态

9个月前推送了新的提交到 master 分支,a504cb1...0f718f7
9个月前推送了新的提交到 master 分支,a9ad41e...a504cb1
9个月前创建了仓库
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
PHP
1
https://gitee.com/topnuomi/Template-engine.git
git@gitee.com:topnuomi/Template-engine.git
topnuomi
Template-engine
Template-engine
master

搜索帮助