php 模板 自己,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()}
有了这些东西,基本上就没有什么工作完成不了了。
内附比较详细的使用说明
php 模板 自己,php自己写了一个模板相关推荐
- 类模板里面的函数写在类模板里面和写在类模板的外面,且在1个.cpp文件中
和类一样,类模板里面声明的函数,其函数体写在类里面和外面都行,但是有一点需要注意:1.用友元函数重载<< 或 >>运算符,函数声明写在类模板里面,函数实现写在类模板外面,要在函 ...
- c语言程序的模板,C++中模板与用C语言中实现模板
1.模板的概念 我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同.正确的调用重载函数.例如,为求两个数的最大值,我们定义MAX()函数需要 ...
- c++模板类(一)理解编译器的编译模板过程
如何组织编写模板程序 前言 常遇到询问使用模板到底是否容易的问题,我的回答是:"模板的使用是容易的,但组织编写却不容易".看看我们几乎每天都能遇到的模板类吧,如STL, ATL, ...
- 【无标题】类模板详解\n类模板的定义及实例化\ntemplate\u003Cclass 模板参数>\nclass 类名 {\n // 类定义\n};\n\ntemplate\u003Ctypen
类模板详解\n类模板的定义及实例化\ntemplate\u003Cclass 模板参数>\nclass 类名 {\n // 类定义\n};\n\ntemplate\u003Ctypenam ...
- 一个自己写的PHP模板引擎
这是一个自己写的编译型的模板引擎(不包括缓存部分)贴上代码.有问题可以随时跟帖. 单文件版:JTemplate.class.php 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 ...
- xpath里面if判断一个值不为空_现代C++之模板元编程(今天写个If与While)
现代C++之模板元编程(今天写个If与While) 0.导语 今天就放轻松,有可能代码写的看的很晦涩,自己多敲几遍即可,下面来进入正文,如何使用模板元编程实现IF与WHILE. 1.IF实现 我们想要 ...
- 自己写php模板引擎,如何用php编写一个简单的模板引擎(附代码)
php web开发中广泛采取mvc的设计模式,controller传递给view层的数据,必须通过模板引擎才能解析出来.实现一个简单的仅仅包含if,foreach标签,解析$foo变量的模板引擎. 编 ...
- 最短路径 自己写的一个很简单的模板 dijkstra算法
根据图论课本上的一个图自己写的一个最短路径的dijkstra算法 #include<stdio.h> const int m=999999999; int main() {int tu[8 ...
- 分享下自己写的一个微信小程序请求远程数据加载到页面的代码
分享下自己写的一个微信小程序请求远程数据加载到页面的代码 1 思路整理 就是页面加载完毕的时候 请求远程接口,然后把数据赋值给页面的变量 ,然后列表循环 2 js相关代码 我是改的 onload ...
最新文章
- 【转】G40-70、G50-70联想小新笔记本SR1000随机Linux改Windows 7系统操作指导
- java合并整形_java中2个int合并成一个long
- 机器视觉:Asymmetry Problem in Computer Vision
- 虚拟机备份oracle异常,客户端连接虚拟机Oracle服务器异常
- jsp中c:forEach的应用
- 计算机一级电子表格插入表格,计算机一级电子表格
- 大数据-HDFS文件系统是什么
- 罗永浩将重返高科技行业创业 将涉足AR/VR/MR领域
- 排除IIS特殊管理困惑
- 250个jquery 插件
- 阿里巴巴2020首发136道Java高级岗面试题(含答案)
- 算法笔记-二分查找和二分答案
- AXURE9最全的WEB设计元件库(分享版).rplib
- Protel 格式网表转换 Allegro 格式网表的 Skill 程序
- 阿尼亚二次元动漫鼠标指针最新教程+素材打包
- MSM8953_Linux-Android软件手册资料
- sfp寄存器_一种基于Linux系统读写光模块寄存器的方法与流程
- 阿兹尔海默症生物标志物(姑且叫标志物)的一些总结
- electron +vue自定义点击最大化、最小化和关闭窗口事件功能
- jzoj6495 死星 (竞赛图五元环)