首页后端开发PHPPHP EasyTpl的功能特性是什么,怎样安装和应用

PHP EasyTpl的功能特性是什么,怎样安装和应用

时间2024-03-22 14:20:03发布访客分类PHP浏览1009
导读:在实际案例的操作过程中,我们可能会遇到“PHP EasyTpl的功能特性是什么,怎样安装和应用”这样的问题,那么我们该如何处理和解决这样的情况呢?这篇小编就给大家总结了一些方法,具有一定的借鉴价值,希望对大家有所帮助,接下来就让小编带领大家...
在实际案例的操作过程中,我们可能会遇到“PHP EasyTpl的功能特性是什么,怎样安装和应用”这样的问题,那么我们该如何处理和解决这样的情况呢?这篇小编就给大家总结了一些方法,具有一定的借鉴价值,希望对大家有所帮助,接下来就让小编带领大家一起了解看看吧。

   


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

简单快速的 PHP 模板引擎。

功能特性

  • 简单、轻量且快速。
    • 无学习成本
    • 仅仅简单处理并转换为原生PHP语法
    • 兼容PHP原生语法使用
  • 更加简单的输出语法。 例如:{ { = $var } } { { $var } } { { echo $var } }
  • 支持所有控制语法。 例如 if,elseif,else; foreach; for; switch
  • 支持链式访问数组值。 例如:{ { $arr.0 } } { { $map.name } } { { $map.user.name } }
  • 更加安全,默认会自动通过 htmlspecialchars 将输出结果进行处理
    • 除非设置了禁用或者手动使用 raw 过滤器
  • 支持使用PHP内置函数作为过滤器。 例如:{ { $var | ucfirst } }
  • 支持添加自定义过滤器
    • 默认内置过滤器:upper lower nl
  • 支持添加自定义指令,提供自定义功能
  • 支持模板中添加注释。 例如: { { # comments ... #} }

安装

  • 需要 PHP 8.0+

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原生模板一样的,加入的特殊语法只是为了让使用更加方便。

  • EasyTemplate 默认开启输出过滤,可用于渲染视图模板
  • TextTemplate 则是关闭了输出过滤,主要用于文本处理,代码生成等

配置设置

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 过滤器

  • 设置禁用输出过滤 $t-> disableEchoFilter()
  • 模板中禁用输出过滤 { { $name | 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

使用过滤器

默认内置过滤器:

  • upper - 等同于 strtoupper
  • lower - 等同于 strtolower
  • nl - 追加换行符 \n

过滤器使用示例

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

基本使用:

{
{
 '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 EasyTpl的功能特性是什么,怎样安装和应用”的介绍了,感谢各位的阅读,希望文本对大家有所帮助。如果想要了解更多知识,欢迎关注网络,小编每天都会为大家更新不同的知识。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: PHP EasyTpl的功能特性是什么,怎样安装和应用
本文地址: https://pptw.com/jishu/650613.html
sql注入类型有几种,常用语句有哪些 PHP中数组升序排列和随机排序怎样实现呢

游客 回复需填写必要信息