• 技术文章 >后端开发 >php教程

    详解PHP EasyTpl的功能及安装使用方法

    藏色散人藏色散人2021-11-19 17:08:03转载1846

    EasyTpl - 简单快速的 PHP 模板引擎

    简单快速的 PHP 模板引擎。

    功能特性

    安装

    composer

    composer require phppkg/easytpl

    快速开始

    use PhpPkg\EasyTpl\EasyTemplate;
    
    $tplCode = <<<'CODE'
    My name is {{ $name | strtoupper }},
    My develop tags:
    
    {{ foreach($tags as $tag) }}
    - {{ $tag }}
    
    {{ endforeach }}
    CODE;
    
    $t = new EasyTemplate();
    
    $str = $t->renderString($tplCode, [
        'name' => 'inhere',
        'tags' => ['php', 'go', 'java'],
    ]);
    
    echo $str;

    渲染输出:

    My name is INHERE,My develop tags:- php- go- java

    更多使用说明

    语法跟PHP原生模板一样的,加入的特殊语法只是为了让使用更加方便。

    配置设置

    use PhpPkg\EasyTpl\EasyTemplate;$t = EasyTemplate::new([
        'tplDir' => 'path/to/templates',
        'allowExt' => ['.php', '.tpl'],]);// do something ...

    更多设置:

    /** @var PhpPkg\EasyTpl\EasyTemplate $t */
    $t->disableEchoFilter();
    $t->addFilter($name, $filterFn);
    $t->addFilters([]);
    $t->addDirective($name, $handler);

    输出变量值

    下面的语句一样,都可以用于打印输出变量值

    {{ $name }}{{= $name }}{{ echo $name }}

    更多:

    {{ $name ?: 'inhere' }}{{ $age > 20 ? '20+' : '<= 20' }}

    默认会自动通过 htmlspecialchars 将输出结果进行处理,除非设置了禁用或者手动使用 raw 过滤器

    快速访问数组值

    可以使用 . 来快速访问数组值。原来的写法也是可用的,简洁写法也会自动转换为原生写法。

    $arr = [
        'val0',
        'subKey' => 'val1',];

    在模板中使用:

    first value is: {{ $arr.0 }} // val0'subKey' value is: {{ $arr.subKey }} // val1

    If 语句块

    if 语句:

    {{ if ($name !== '') }}hi, my name is {{ $name }}{{ endif }}

    if else 语句:

    hi, my name is {{ $name }}age is {{ $age }}, and{{ if ($age >= 20) }}
     age >= 20.{{ else }}
     age < 20.{{ endif }}

    if...elseif...else 语句:

    hi, my name is {{ $name }}age is {{ $age }}, and{{ if ($age >= 50) }}
     age >= 50.{{ elseif ($age >= 20) }}
     age >= 20.{{ else }}
     age < 20.{{ endif }}

    For/Foreach 语句块

    foreach:

    tags:{{ foreach($tags as $tag) }}- {{ $tag }}{{ endforeach }}

    with keys:

    tags:{{ foreach($tags as $index => $tag) }}{{ $index }}. {{ $tag }}{{ endforeach }}

    模板中添加注释

    {{##}} 包裹的内容将会当做注释忽略。

    {{# comments ... #}}{{ $name }} // inhere

    multi lines:

    {{# this
     comments
     block
    #}}{{ $name }} // inhere

    使用过滤器

    默认内置过滤器:

    过滤器使用示例

    您可以在任何模板中使用过滤器。

    基本使用:

    {{ 'inhere' | ucfirst }} // Inhere {{ 'inhere' | upper }} // INHERE

    链式使用:

    {{ 'inhere' | ucfirst | substr:0,2 }} // In{{ '1999-12-31' | date:'Y/m/d' }} // 1999/12/31

    传递非静态值:

    {{ $name | ucfirst | substr:0,1 }}{{ $user['name'] | ucfirst | substr:0,1 }}{{ $userObj->name | ucfirst | substr:0,1 }}{{ $userObj->getName() | ucfirst | substr:0,1 }}

    将变量作为过滤器参数传递:

    {{
        $suffix = '¥';}}{{ '12.75' | add_suffix:$suffix }} // 12.75¥

    自定义过滤器

    use PhpPkg\EasyTpl\EasyTemplate;$tpl = EasyTemplate::new();// use php built function$tpl->addFilter('upper', 'strtoupper');// 一次添加多个$tpl->addFilters([
        'last3chars' => function (string $str): string {
            return substr($str, -3);
        },]);

    在模板中使用:

    {{
      $name = 'inhere';}}{{ $name | upper }} // INHERE{{ $name | last3chars }} // ere{{ $name | last3chars | upper }} // ERE

    自定义指令

    您可以使用指令实现一些特殊的逻辑。

    $tpl = EasyTemplate::new();$tpl->addDirective(
        'include',
        function (string $body, string $name) {
            /** will call {@see EasyTemplate::include()} */
            return '$this->' . $name . $body;
        });

    在模板中使用:

    {{ include('part/header.tpl', ['title' => 'My world']) }}

    Github: github.com/phppkg/easytpl

    推荐学习:《PHP视频教程

    以上就是详解PHP EasyTpl的功能及安装使用方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:learnku,如有侵犯,请联系admin@php.cn删除
    专题推荐:PHP EasyTpl
    上一篇:看看PHP有哪四种方法实现交换两个整型变量 下一篇:快速教你在php中如何操作使用protobuf
    PHP编程就业班

    相关文章推荐

    • php 怎么实现大转盘功能• 看看PHP有哪四种方法实现交换两个整型变量• 分析PHP7.2忽略父类方法以及Liskov替换原则相关问题• php的数组只支持数字下标吗• php怎样实现身份证号替换为星号

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网