变量输出修饰器
变量修饰器可以用于变量, 自定义函数或者字符串。
后置修饰器
后置修饰器用于变量输出对数据进行相应调整而使用, 使用修饰器,需要在变量的后面加上|(竖线)并且跟着修饰器名称。 修饰器可能还会有附加的参数以便达到效果。
参数会跟着修饰器名称,用":"(冒号)分开,多个参数用":"(冒号)隔开。
{* 转为大写 *}
{$title|upper}
{* 接受多个参数 *}
{$title|truncate:40:"..."}
{* 字符串中使用 *}
{"foobar"|upper}
{* 1个参数,默认值修饰器 *}
{$temp|default:''}
{* 日期格式化 *}
{time()|date_format:"%Y年%m月%d日"}
{* 多个修饰器联合使用 *}
{assign var=my_string value="aldskffalkdj中文中文中文"}
{$my_string|upper|truncate:20}
{*
raw 非转义原文输出
Sdopx 默认输出会自动转换成HTML实体输出,raw 修饰器可以按原文
raw 修饰器必须是最后一个修饰器
*}
{'<b>name</b>'|raw}
{$my_string|upper|truncate:20|raw}
输出:
HELLO SDOPX
Hello Sdopx
FOOBAR
2018年07月26日
ALDSKFFALKDJ中文中...
<b>name</b>
ALDSKFFALKDJ中文中...
目前内置支持的修饰器
修饰器 | 参数 | 描述 |
---|---|---|
upper | 无 | 字母转为大写 |
lower | 无 | 字母转为小写 |
strip_tags | 无 | 移除html标签 |
default | def:string='' | 默认值修饰器,当变量值为无效、null、空 时,显示 def 的值 |
date_format | format:string='%Y-%m-%d %H:%M:%S' | 时间格式化,如时间:%Y-%m-%d %H:%M:%S |
leftpad | len:number=0,ch:string=' ' | 字符串左填充,len 填充长度 ch 为填充的字符 |
rightpad | len:number=0,ch:string=' ' | 字符串右填充,len 填充长度 ch 为填充的字符 |
truncate | len:number=60,etc='' | 字符串截取,len 截取长度 中文算2个字符串,etc 是超出后的替代符号 如 … |
number_format | decimals=0,dec_point='.',thousands_sep='' | decimals 要保留的小数点位数,dec_point指定小数显示的字符,thousands_sep 指定千位分隔符显示的字符 |
option | keys=null, values=null, def:string='' |
选择输出,keys 如果是数组那么 values 也要求是数组,当 值 在keys 中或者等于keys 则输出对应位置的values 值,如果不存在 输出 def. |
raw | 无 |
按原义输出,不转码输出,必须是最后的修饰器 |
除了系统提供的修饰器,Sdopx 还支持用户自定义注册修饰器,更多可查阅自定义修饰器。
自定义修饰器
例子如下:
//test.php
define('ROOT_DIR', __DIR__);
date_default_timezone_set('PRC');
require(ROOT_DIR . '/vendor/autoload.php');
use sdopx\Sdopx;
//定义修饰器 replace
class Replace
{
public function render($string, $search, $replace)
{
return str_replace($search, $replace, $string);
}
}
//注册修饰器
Sdopx::registerModifier('replace', new Replace());
$sdopx = new Sdopx();
//设置模板目录
$sdopx->setTemplateDir('./view');
//设置编译代码存放目录
$sdopx->setCompileDir('./runtime');
//注册变量
$sdopx->assign('name', 'wj008');
//显示模板
$sdopx->display('index.tpl');
模板:
{'hello test!'|replace:'test':$name}</br>
结果:
hello wj008!</br>
更多自定义修饰器,请参阅修代码编程-饰器文档。