僅僅是輸出變量并不能滿足模板輸出的需要,內置模板引擎支持對模板變量使用調節器和格式化功能,其實也就是提供函數支持,并支持多個函數同時使用。用于模板標簽的函數可以是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