仅仅是输出变量并不能满足模板输出的需要,内置模板引擎支持对模板变量使用调节器和格式化功能,其实也就是提供函数支持,并支持多个函数同时使用。用于模板标签的函数可以是PHP 内置函数或者是用户自定义函数,和 smarty 不同的是用于模板的函数不需要特别的定义。
# 函数调用格式
~~~
{$varName|function1|function2=arg1,arg2,** }
~~~
**说明:**
* “{ ”和“$”符号之间不能有空格 ,后面参数的空格就没有问题
* ** 表示模板变量本身的参数位置
* 支持多个函数,函数之间支持空格
* 支持函数屏蔽功能,在配置文件中可以配置禁止使用的函数列表
模板编译后的结果:
~~~
<?php echo function2 ( arg1,arg2,function1 ( $varName ) ); ?>
~~~
模板中如果不加**的格式为:
~~~
{$varName|function1|function2=arg1,arg2}
~~~
模板编译后的结果:
~~~
<?php echo function2 ( function1 ( $varName ),arg1,arg2 ); ?>
~~~
# 使用例子
首先,我们向模板传递值:
~~~
// 赋值
$sContent = 'Welcome to user QueryPHP,thank u !';
$this->assign( 'sContent', $sContent );
// 模板
{$sContent|strtoupper|substr=0,3}
~~~
模板编译后的结果:
~~~
<?php echo substr ( strtoupper ( $sContent ),0,3 ); ?>
~~~
程序最后运行结果为:
~~~
WEL
~~~
> 注意:函数的定义和使用顺序的对应关系,通常来说函数的第一个参数就是前面的变量或者前一个函数使用的结果,如果你的变量并不是函数的第一个参数,需要使用定位符号“**”,例如:
首先,我们向模板传递一个时间值:
~~~
// 赋值
$nDate = time();
$this->assign( 'nDate',$nDate );
// 模板
{$nDate|date="Y-m-d",**}
~~~
模板编译后的结果:
~~~
<?php echo date ( "Y-m-d",$nDate ); ?>
~~~
函数的使用没有个数限制,但是可以允许配置 **theme_notallows_func** 定义禁用函数列表,系统默认禁用了 exit、die 和 return 函数,以防止破坏模板输出,我们也可以增加额外的定义,多个函数之间使用半角逗号分隔即可。
# 快捷方法
并且还提供了在模板文件中直接调用函数的快捷方法,无需通过模板变量,包括两种方式:
### 1、执行方法并输出返回值:
~~~
{:function(…)}
~~~
### 2、使用静态函数来格式化参数
我们在模板中写下如下的代码:
~~~
{~$nCurrentTime=time()}
{$nCurrentTime|Q+smartDate}
~~~
模板编译后的结果:
~~~
<?php $nCurrentTime=time(); ?>
<?php echo Q::smartDate ( $nCurrentTime ); ?>
~~~
程序运行结果如下:
0 秒前
## 3、执行方法但不输出:
~~~
{~function(…)}
~~~
接下来,我们在模板写下如下的代码:
~~~
{~echo('Hello world!')}
~~~
模板编译后的结果:
~~~
<?php echo('Hello world!'); ?>
~~~
程序最后运行结果为:
~~~
Hello world!
~~~
- 关于 QueryPHP
- 获取 QueryPHP
- 环境要求
- 许可协议 Free
- 执行流程 MVC
- 命名规范 $sName
- 目录结构 DIR
- 单一入口 index.php
- 响应客户端请求 URL
- 命名空间与自动载入 Autoload
- 路由
- 路由导入
- 批量导入
- 参数正则
- 分组定义
- 路由绑定
- 路由域名
- 分层控制器
- 默认和初始化APP
- 默认控制器和方法
- url 模式
- url 生成
- url 伪静态
- url 重写
- url 重定向
- 控制器绑定
- 方法器分层
- 控制器 __init
- 控制器方法交互
- 模板引擎语法
- C变量输出 $sName
- C变量支持函数和方法 $sName|trim
- C快捷输出 ~
- C标签简化 Css & Javascript
- C默认值 eq 三元运算符
- C变量运算符 +-
- 变量递增递减 ++--
- C循环数据 list
- N变量赋值 assign
- N循环数据 list
- N循环数据高级版 lists
- C循环数据 while
- N循环数据 while
- C循环数据 for
- N循环数据 for
- C条件判断 if
- N条件判断 if
- 标签嵌套无限层级
- N循环流程 break & continue
- N使用 PHP 代码
- N包含子模板 include
- J模板引擎 intro
- J条件判断 if
- J循环数据 each
- J变量 & 表达式
- J变量支持函数和方法 hello|test
- J默认值 eq 三元运算符
- J框架前端组件 jquery.queryphp.js
- J前端 CSS 规范
- J前端 JS 规范
- 保护标签自身 tagself
- 数据库
- 数据库配置
- 执行原生 sql 语句
- 数据库事务
- 数据库构造器 prefix
- 数据库构造器 table
- 数据库构造器 forceIndex
- 数据库构造器 where
- 数据库构造器 bind
- 数据库构造器 join
- 数据库构造器 union
- 数据库构造器 orderBy
- 数据库构造器 groupBy
- 数据库构造器 having
- 数据库构造器 distinct
- 数据库构造器 aggregate
- 数据库构造器 limit
- 数据库构造器 forUpdate
- 数据库构造器 columns
- 数据库构造器 reset
- 数据库集合查询
- 数据库查询数据 get
- 数据库查询多条数据 getAll
- 数据库查询单条数据 getOne
- 数据库查询聚合查询 aggregate
- 数据库写入数据 insert
- 数据库写入数据 insertAll
- 配置
- 配置格式
- 惯性配置
- 配置文件
- 读取配置
- 设置配置
- 删除配置
- 日志
- 日志配置参数
- 日志路径
- 日志过滤器
- 日志处理器
- 缓存
- 缓存配置参数
- 缓存路径
- 缓存指定时间
- COOKIE
- COOKIE 配置参数
- 开发调试
- 页面 trace