snakevil
(snakevil)
中级会员
 
中级会员
UID 27209
精华
3
积分 261
帖子 201
金钱 231 喜悦币
威望 30
人脉 0
阅读权限 30
注册 2004-3-24
状态 离线
|
[原创]从 Vant 吸收而来的 Template 类
首先要感谢 lwg888 同志
我自己这个类的原型就来自于 Vant.v3.0
体会到二次编译的优势、就偷梁换柱重新完成了这个类
不过在一些细节处理上
我以我自己认为相对较好的方式作了更改
所以现在再和 Vant.v3.0 来对比
抄袭的意味就不那么浓重了
<?php
/** * @ Page : Class.Template.PHP * @ Copyright : Snakevil, 1998-2004 * @ Author : Snakevil * * @ Usage : * 定义 Template 模版操作类。 * * @ Notes : * + 4:25 2004-6-9 * 正式完成最初版本。 * * @ Related Instructions : * 所有指令允许在非关键处存在不定量空格,但属性设定如 page= 之类禁止存在空格 * 单独变量 * 单变量 {[ test_var ]} * 数组子项 {[ test_arr['test_idx'] ]} * 页面嵌套 * 直接页面连接指定 {[ nest page="demo.htm" ]} * 变量页面连接指定 {[ nest page=test_var ]} * 带预定变量值的页面连接指定 {[ nest page="demo.htm?title=测试页面标题 ]} * 在此示例中,demo.htm 模版中 {[title]} 强制性定义为 测试页面标题 * 循环块 * 自然数循环 * 默认循环 {[ loop name=loop_name data=test_var ]} {[ / loop ]} * 在此示例中,假设 test_var 值为 100,则执行从 0 到 99 的循环 * 指定步进循环 {[loop name=loop_name data=test_var from=4 step=2]}{[/loop]} * 在此示例中,假设 test_var 值为 100,则执行从 4 到 98 的双数循环 * 在此示例中,假设 test_var 值为一长度为 8 数组,则执行从第 4 项到第 8 项 * 的双数项循环 * 数据集循环 {[ loop name=loop_name data=test_var ]} {[ / loop ]} * 在此示例中,假设 test_var 为一长度为 8 的数组,则遍历所有 8 个子项 * 嵌套循环 * {[ loop name=loop_1 data=var_1 ]} * {[ loop name=loop_2 data=val[loop_1] ]} * {[ value[loop_2]['name'] ]} : {[ value[loop_2]['value'] ]} * {[ / loop ]} * {[ / loop ]} * 在此示例中,遍历 var_1 一次,每 var_1 子项对应遍历 var_2 一次 * */
/**- Content Start -----------------------------------------------------------*/
if (defined('SWORK_COPYRIGHT') && SWORK_COPYRIGHT === 'SNakeVil 1998-2004') { /** 类封装开始 */
/** * @ Purpose : * 指定目录为模版文件保存目录 * @ Constant Name : SWORK_TEMPLATE_DIR_TPL */ define('SWORK_TEMPLATE_DIR_TPL', 1); /** * @ Purpose : * 指定目录为编译后模版文件保存目录 * @ Constant Name : SWORK_TEMPLATE_DIR_CPL */ define('SWORK_TEMPLATE_DIR_CPL', 2); /** * @ Purpose : * 指定目录为缓存文件保存目录 * @ Constant Name : SWORK_TEMPLATE_DIR_BFR */ define('SWORK_TEMPLATE_DIR_BFR', 3);
/** * @ Purpose : * _swork_ 标准 utility 类 Template * @ Package Name : Template * @ Author : SNakeVil * @ Modifications : * * @ See Alse : */ class FwSnvTemplate extends FwSnvBaseClass { /** * @ Purpose : * 模版文件保存目录 * @ Type : string */ var $mTemplateDir; /** * @ Purpose : * 编译后模版文件保存目录 * @ Type : string */ var $mCompiledDir; /** * @ Purpose : * 缓存文件保存目录 * @ Type : string */ var $mBufferDir; /** * @ Purpose : * 应用到模版中的变量列表 * @ Type : array */ var $mVars; /** * @ Purpose : * 应用到的模版文件列表 * @ Type : array */ var $mTemplateFiles; /** * @ Purpose : * 相应的编译后的模版文件列表 * @ Type : array */ var $mCompiledFiles; /** * @ Purpose : * 相应的缓存文件列表 * @ Type : */ var $mBufferFiles; /** * @ Purpose : * 应用到的虚拟模版文件(从网络、数据库中获得)列表 * @ Type : array */ var $mTemplateVirtual; /** * @ Purpose : * 模版指令开始标记 * @ Type : string */ var $mDelimiterLeft; /** * @ Purpose : * 模版指令结束标记 * @ Type : string */ var $mDelimiterRight; /** * @ Purpose : * 模版指令前缀标记 * @ Type : string */ var $mDelimiterPrefix; /** * @ Purpose : * 编译时使用到的模版列表 * @ Type : array */ var $mTemplates;
/** * @ Initialize Method @ * @ Parameters : * string $_TplDir 原始模版文件保存目录 * string $_CplDir 编译模版文件保存目录 * string $_BfrDir 缓存文件保存目录 */ function FwSnvTemplate($_TplDir = 'Templates', $_CplDir = 'Templates_C', $_BfrDir = 'Templates_B')
/** * @ Purpose : * 设置必须的目录 * @ Method Name : SetDir() * @ Parameters : * string $_Dir 设定的目录 * constant $_DirType 目录对应的内置固化设定 * boolean $_IngoreError 指定目录不符合要求时是否继续 * @ Return : boolean 是否设置成功 */ function SetDir($_Dir = '', $_DirType = SWORK_TEMPLATE_DIR_TPL, $_IngoreError = FALSE) /** * @ Purpose : * 设置模版中存在但应用时并未指定的变量显示的内容 * @ Method Name : SetUDefault() * @ Parameters : * string $_Str 显示内容 * @ Return : boolean 是否设置成功 */ function SetUDefault($_Str = '') /** * @ Purpose : * 设置模版指令分割符 * @ Method Name : SetDelimiter() * @ Parameters : * string $_Left 左分隔符 * string $_Right 右分隔符 * string $_Prefix 前缀分隔符 * @ Return : boolean 是否设置成功 */ function SetDelimiter($_Left = '{', $_Right = '}', $_Prefix = '')
/** * @ Purpose : * 格式化文件名 * @ Method Name : pFormatName() * @ Parameters : * reference string $_FileName 需格式化的文件名称 * @ Return : mixed 完全格式化后的文件名 */ function pFormatName(& $_FileName)
/** * @ Purpose : * 加载模版文件 * @ Method Name : LoadTemplate() * @ Parameters : * string $_FileName 原始文件名 * @ Return : boolean 是否加载成功 */ function LoadTemplate($_FileName = '') /** * @ Purpose : * 加载虚拟模版内容 * @ Method Name : LoadVirtual() * @ Parameters : * string $_Name 虚拟模版内容名称 * string $_TplContent 虚拟模版内容 * integer $_ModTime 虚拟模版内容修改时间 * @ Return : boolean 是否加载成功 */ function LoadVirtual($_Name = '', $_TplContent = '', $_ModTime = 0)
/** * @ Purpose : * 生成编译模版文件的文件名 * @ Method Name : pGenCplFileName() * @ Parameters : * string $_FileName 原始文件名 * @ Return : mixed 生成的文件名 */ function pGenCplFileName($_FileName = '') /** * @ Purpose : * 添加应用到的变量 * @ Method Name : AddVar() * @ Parameters : * string $_Key 变量名称 * mixed $_Value 变量内容 * @ Return : boolean 是否添加成功 */ function AddVar($_Key = '', $_Value = '') /** * @ Purpose : * 添加应用到的变量 * @ Method Name : AddMultiVar() * @ Parameters : * array $_List 要添加的变量对应列表 * @ Return : boolean 是否添加成功 */ function AddMultiVars($_List = array())
/** * @ Purpose : * 判断模版文件是否被编译过 * @ Method Name : IsCompiled() * @ Parameters : * string $_FileName 进行判断的模版文件名 * @ Return : boolean 是否被编译过 */ function IsCompiled($_FileName = '') /** * @ Purpose : * 重新编译模版文件 * @ Method Name : UpdateCompiled() * @ Parameters : * string $_FileName 进行判断的模版文件名 * @ Return : boolean 编译是否成功 */ function UpdateCompiled($_FileName = '')
/** * @ Purpose : * 读取模版文件内容 * @ Method Name : pReadFile() * @ Parameters : * string $_FileName 模版文件名 * @ Return : mixed 模版文件的内容 */ function pReadFile($_FileName = '')
/** * @ Purpose : * 解析模版内容中的页面嵌套 * @ Method Name : ParseInclude() * @ Parameters : * reference string $_rContent 要解析的模版内容 * @ Return : boolean 是否解析成功 */ function ParseInclude(& $_rContent)
/** * @ Purpose : * 解析模版内容中的直接变量 * @ Method Name : ParseVars() * @ Parameters : * reference string $_rContent 要解析的模版内容 * @ Return : boolean 是否解析成功 */ function ParseVars(& $_rContent)
/** * @ Purpose : * 解析模版内容中的循环块 * @ Method Name : ParseLoops() * @ Parameters : * reference string $_rContent 要解析的模版内容 * @ Return : boolean 是否解析成功 */ function ParseLoops(& $_rContent)
/** * @ Purpose : * 格式化索引字符串中的数字和字符串索引 * @ Method Name : pFormatIndex() * @ Parameters : * string $_Str 格式化的索引 * @ Return : mixed 格式化以后的内容 */ function pFormatIndex($_Str = '')
/** * @ Purpose : * 解析目标模版文件 * @ Method Name : Parse() * @ Parameters : * string $_FileName 模版文件名 * @ Return : mixed 模版文件的内容 */ function Parse($_FileName = '') }
/** 类封装结束 */ }
?>
|
|