跳转到主内容
极星编程网:以代码为星,赴技术山海!

php自己写了一个模板

/*作者: 牛哄哄Q Q: 455703030*/function template($template,$cacheFile,$set){is_readable($template) || exit('模板文件不存在!');filemtime($template) > @filemtime($cacheFile) && parse_template($template,$cacheFile);$inTemplate = true;is_readable($cacheFile) ? include $cacheFile : exit('无法读取缓存,缓存路径可能有误!');}function parse_template($template,$cacheFile=''){$content = file_get_contents($template);$content = preg_replace('/{*([^{}]*)*}/','',$content);$content = preg_replace('/$([A-Za-z0-9_]+)/','$set['\1']',$content);$content = preg_replace('/$[([A-Za-z0-9_]+)]/','$\1',$content);$content = preg_replace('/{$([A-Za-z0-9_[]'"]+)}/',' echo $\1; ?>',$content);$content = preg_replace('/{include(([^{}]+))}/',' include \1; ?>',$content);$content = preg_replace('/{echofile(([^{}]+))}/',' echo file_get_contents(\1); ?>',$content);$content = preg_replace('/{code(([^{}]+))}/',' \1; ?>',$content);$content = preg_replace('/{if(([^{}]+))}/',' if (\1) { ?>',$content);$content = preg_replace('/{elseif(([^{}]+))}/',' } elseif(\1) { ?>',$content);$content = preg_replace('/{while(([^{}]+))}/',' while (\1) { ?>',$content);$content = preg_replace('/{foreach(([^{}]+))}/',' foreach (\1) { ?>',$content);$content = str_replace(array('{else}','{/if}','{/while}','{/foreach}'),array(' }else{ ?>',' } ?>',' } ?>',' } ?>'),$content);if (preg_match_all('/{template(([^{}]+))}/',$content,$tplName)){foreach ($tplName[1] as $value) $tplContent[] = parse_template(eval('return '.$value.';'));$content = str_replace($tplName[0],$tplContent,$content);}if ('' == $cacheFile) return $content;@file_put_contents($cacheFile,' true===$inTemplate || exit('非法访问!'); ?>'.$content);}1,修复一个因为疏忽造成的小BUG,编译之后的代码少 了一个{符号,呵呵2,更改模板嵌套的编译模式,现在这种模式使用更简单方便,也更符合大家的习惯3,增加了一个新的功能,其实本来提供的功能,也可以实现此功能,但是毕竟不专业,用起来不方便。此功能用来直接输出一个静态的文件,我曾经做过测试,这样直接输出,效率要比include高的多的多此模板函数提供的标签及功能:1,添加注释{*   *}2,输出变量{$i}   //需要对变量进行格式化,可以使用{code()}标签来执行一个函数进行格式化输出3,包含一个动态文件{include()}4,包含一个静态文件{echofile()}5,嵌套一个模板{template()}6,判断,分支{if()} {elseif()}  {else} {/if}7,循环{while()}   {/while}{foreach()}  {/foreach}8,执行一段PHP代码,包括赋值,函数等等等等{code()}有了这些东西,基本上就没有什么工作完成不了了。内附比较详细的使用说明

相关文章