说到PHP的模板引擎,那可谓是很多。像Smarty、SmartTemplate、FastTemplate等等... 其中属Smarty功能最为强大。
不过呢,个人感觉它还有些欠缺的地方,例如表达式赋值,modifier只支持传递一个参数等。因此,在CMSPAD项目中我们开发了一套新的模板引擎,语法上大部分兼容Smarty,但提供更强大的函数引擎和表达式自动赋值。
下面我把一些范例写出来,看看能不能触发一下大家的创新思维:
1. 公用函数标签:<{@函数名称 [参数1 [参数2]]}>
模板代码
- <{@strcmp "123456789" "12345678"}>
- <{@strtoupper $hello}>
2. 内置函数标签:在文本区域内的自动函数支持
模板代码
- <{@strtoupper "$hello strlen($hello) strcmp($hello,'world')"}>
- <{if $hello=strtolower('WORLD')}>Is world<{/if}>
- <{if strlen($hello) + 3 = 5}>$Hello var length is greater than 5<{/if}>
3. 变量赋值:<{assign name=变量名 expr=表达式}>
模板代码
- <{assign name=hello expr=strlen($hello)+5}>
- <{assign name=hello expr="strlen($hello) + 5" }>
4. 属性表达式:在某些系统支持的属性中可以提供表达式支持
模板代码
- <{for start='$start + 3' stop=count($ints) step=2 value=i}><{$i}>.<{/for}>
由于提供了内置表达式支持,因此CMSPAD的模板引擎并不需要兼容Smarty的modifier语法。
整个系统的函数,我们分成了三个部分:公用函数、内置函数、标签函数,三个函数可以分开进行设置。公用和内置函数库,默认使用了系统的函数库,而用户可以自行定义或覆盖默认函数(例如支持中文的substr函数)以达到更理想的效果。所谓标签函数,就是类似于Smarty上的函数样式。与其不同的一点是,我们把switch函数给简化成下列样式:
模板代码
- <{switch $hello}>
- <{case "hello"}>
- This is Hello
- <{case 'world'}>
- This is World
- <{case}>
- This is Default
- <{/switch}>
目前,此库正在进行beta测试中。
分享到:
相关推荐
HTMLRender是一款基于jQuery的数据绑定模板引擎,主要用于帮助开发者在JavaScript中高效地进行DOM操作和数据渲染。这款插件是jQuery的一个扩展,它提供了一种简洁的语法来将数据与HTML结构进行绑定,使得动态生成和...
火萤桌面视频新特性:四边触发
4. 执行模板:在Visual Studio中,保存T4模板文件将会自动触发模板的执行,生成的代码会出现在与模板同目录下的.cs文件中。 四、T4模板应用 1. 代码生成:除了实体类,T4还可以生成数据访问层(DAL)、业务逻辑层...
在这个场景中,我们关注的是"MVC3模板引擎生成静态页",这是一个提高网站性能和SEO(搜索引擎优化)的有效策略。 模板引擎是MVC框架中的关键组成部分,它允许开发者通过定义模板来控制页面的布局和样式。在ASP.NET ...
在IT行业中,创建引人入胜的演示文稿往往需要运用一些视觉效果来提升观众的体验,例如“点击触发图片放大效果”。这个标题所指的“点击触发图片放大效果ppt模板”是一种交互式的设计,它允许用户通过点击小图来查看...
然而,这种方法不能完全确定器件是否完好无损。 - **高级检测**:为了更准确地检测双向触发二极管,需要提供大于250V的直流电压源。检测过程中,通过管子的电流不应超过5mA。使用晶体管耐压测试器进行检测非常便捷。...
在电力系统仿真中,PSCAD(Power System Computer-Aided Design)是一款强大的工具,尤其在电力电子器件的触发分析方面有着显著的应用。本文主要探讨了如何在PSCAD中处理电力电子器件的触发以及相关的一些关键知识点...
标题中的“AJAX中不触发javascript事件”指的是在使用AJAX技术进行页面更新时,可能出现JavaScript事件不按预期触发的情况。这通常是由于AJAX请求更新页面部分时,不会触发表单提交、点击或其他依赖于页面刷新的...
在这个案例中,可能会用到QLabel来展示特性描述,QPushButton作为点击触发动作的按钮,而QScrollArea可能被用来创建可滚动的特性列表,以便在有限的屏幕空间内展示更多内容。 此外,为了实现界面的自适应布局,Qt的...
4. 高频振荡回路中TVS的特性分析:尽管TVS在脉冲功率技术中的应用广泛,但在高频振荡回路中的电流开断特性尚不明确。本文通过在四种不同振荡频率的回路中改变电感值,对TVS进行了实验研究,得到了高振荡频率下TVS的...
《电平触发与边沿触发的概念,以及RS、JK、D触发器的解析》 触发器,作为数字电路中的基础元件,是存储一位二进制信息的最小单元电路。其核心特性在于它拥有两种稳定状态,可以分别表示逻辑0和逻辑1,并且在输入...
STM8单片机是STMicroelectronics公司推出的一款8位微控制器,因其低功耗、高性能和易用性而被广泛应用。...通过深入理解STM8的定时器和ADC特性,开发者可以进一步优化这种触发机制,以适应更多复杂的应用场景。
双向触发二极管(2CTS)是属于三层结构,具有正、反向转折电压,且其正、反向伏安特性非常对称。常见型号有DB3型双向触发二极管,实测它的正反向击穿(可逆)电压为25V左右。附图2为简易击穿电压测试仪,测量400V...
4. **编程触发逻辑**:在“硬触发.vi”程序中,你需要编写触发逻辑,比如当满足某个条件(例如,传感器检测到物体)时,发送触发信号。这通常涉及到事件结构和条件分支。 5. **图像采集**:一旦触发信号发送,相机...
模板引擎允许开发者使用标记语言来定义页面布局和设计,然后通过数据绑定将动态数据填充到这些模板中。这通常涉及使用服务器控件、数据源和数据绑定表达式,如`<%# %>`或`<% %>`。 EFPlatform.TemplateEngine v1.0 ...
其中,**触发功能**是示波器的核心特性之一,它使得用户能够精确地捕捉特定类型的信号变化,这对于故障诊断、信号分析以及电路设计等工作至关重要。 #### 二、触发的基本概念 - **触发**: 是指根据预设的条件(如...
作为专门为ASP.NET设计的模板引擎,EFPlatform.TemplateEngine应无缝集成到ASP.NET MVC或Web Forms架构中,通过控制器动作或Page生命周期事件触发静态页面的生成。 6. **部署和配置**: 使用EFPlatform.Template...
例如,你可能需要创建一个JSON文件存储变量数据,然后在模板文件中引用这些数据。此外,可以通过设置插件配置实现自动化任务,如自动编译保存的模板文件。 **总结** Htmlc插件为Sublime Text3用户提供了无缝集成...
《电子政务中的晶闸管跨接器触发电路——基于负阻特性》 电子政务,作为信息化技术在政府管理和服务中的应用,不仅提高了行政效率,也优化了公共服务。在这个领域中,电力电子技术的应用尤为关键,特别是在自动化和...
DALSA相机外触发设置与连接的知识点包含了相机设置、连接方式、CamExpert参数设置和信号线路连接等多个方面。该知识点适用于新手以及刚接触机器视觉的人员,帮助他们理解如何对DALSA相机进行外触发设置以达到预定的...