当前位置: 首页 > 工具软件 > CMSPAD > 使用案例 >

CMSPAD中的模板引擎新特性,看看能否触发你的创新想法~

宇文鸿振
2023-12-01

说到PHP的模板引擎,那可谓是很多。像Smarty、SmartTemplate、FastTemplate等等... 其中属Smarty功能最为强大。

不过呢,个人感觉它还有些欠缺的地方,例如表达式赋值,modifier只支持传递一个参数等。因此,在CMSPAD项目中我们开发了一套新的模板引擎,语法上大部分兼容Smarty,但提供更强大的函数引擎和表达式自动赋值。

下面我把一些范例写出来,看看能不能触发一下大家的创新思维:

1. 公用函数标签:<{@函数名称 [参数1 [参数2]]}>

模板代码
  1. <{@strcmp "123456789" "12345678"}>  
  2. <{@strtoupper $hello}>  

2. 内置函数标签:在文本区域内的自动函数支持

模板代码
  1. <{@strtoupper "$hello strlen($hello) strcmp($hello,'world')"}>  
  2. <{if $hello=strtolower('WORLD')}>Is world<{/if}>  
  3. <{if strlen($hello) + 3 = 5}>$Hello var length is greater than 5<{/if}>  

3. 变量赋值:<{assign name=变量名 expr=表达式}>

模板代码
  1. <{assign name=hello expr=strlen($hello)+5}>  
  2. <{assign name=hello expr="strlen($hello) + 5" }>  

4. 属性表达式:在某些系统支持的属性中可以提供表达式支持

模板代码
  1. <{for start='$start + 3' stop=count($ints) step=2 value=i}><{$i}>.<{/for}>  

由于提供了内置表达式支持,因此CMSPAD的模板引擎并不需要兼容Smarty的modifier语法。

整个系统的函数,我们分成了三个部分:公用函数、内置函数、标签函数,三个函数可以分开进行设置。公用和内置函数库,默认使用了系统的函数库,而用户可以自行定义或覆盖默认函数(例如支持中文的substr函数)以达到更理想的效果。所谓标签函数,就是类似于Smarty上的函数样式。与其不同的一点是,我们把switch函数给简化成下列样式:

模板代码
  1. <{switch $hello}>  
  2.   <{case "hello"}>  
  3.     This is Hello   
  4.   <{case 'world'}>  
  5.     This is World   
  6.   <{case}>  
  7.     This is Default   
  8. <{/switch}>  

目前,此库正在进行beta测试中。

 类似资料: