论PHP模板的简单高效实现

大家都知道PHP是世界上最好的语言,PHP在项目开发中的灵活性是个非常重要的优点,非常适合经常变动的业务逻辑和页面内容,当然都离不开一个好用的模板引擎,市面上最常见的PHP模板引擎是smarty,但是smarty功能十分丰富,有些重量级了.
那有没有更好的模板引擎呢? 先来探讨一下模板引擎的几大特点: 书写简单,执行速度,逻辑表达,方便扩展等.从这几方面看最适合的模板引擎就是PHP本身了,所有的要求都能满足要求,不管是smarty还是其他的模板引擎,在执行速度,逻辑表达,方便扩展的方面都不可能超过PHP本身,因为他们都是PHP实现的.唯一的短板就是书写简单这一方面.
那我们怎么补齐这块短板呢? 其实完全可以自己实现一个模板引擎语法规则,然后配合上一个预编译过程即可,把自定义个的模板引擎语法,编译成原生PHP代码即可,既补足了书写简单的短板,也没有对执行速度,逻辑表达,方便扩展等方面有任何损失.并且编译只需一次,编译一次以后模板页面没有变动,再也不需要第二次处理,配合OPCODE缓存更加强大,更能享受到PHP版本升级带来的性能红利.
那怎么来实现呢? 在PHP页面中使用的最多的就是<?php echo $row["title"]; ?>来输出一个变量内容,写起来键盘敲击次数还是比较多的.完全可以实用模板语法{{$row.title}}代替,从原来的28个字符减少到了14个字符,包括if else foreach include等模板语法,只需要一个正则替换,即可实现一个简单高效的模板引擎.
模板页面

<table>
{{foreach $rows as $i => $row}}
    <tr><td>{{$row["username"]}}</td><td>{{$row["password"]}}</td></tr>
{{endforeach}}
</table>

PHP页面

<table>
<?php foreach ($rows as $i => $row) { ?>
    <tr><td><?php echo $row["username"]; ?></td><td><?php echo $row["password"]; ?></td></tr>
<?php } ?>
</table>

核心代码示意
// 此代码已被精简

$tmpl = preg_replace(‘/{{if (.+?)}}/‘,       ‘<?php if ($1) { ?>‘,       $tmpl);
$tmpl = preg_replace(‘/{{else}}/‘,           ‘<?php } else { ?>‘,        $tmpl);
$tmpl = preg_replace(‘/{{elseif (.+?)}}/‘,   ‘<?php } elseif ($1) { ?>‘, $tmpl);
$tmpl = preg_replace(‘/{{endif}}/‘,          ‘<?php } ?>‘,               $tmpl);
$tmpl = preg_replace(‘/{{foreach (.+?)}}/‘,  ‘<?php foreach ($1) { ?>‘,  $tmpl);
$tmpl = preg_replace(‘/{{endforeach}}/‘,     ‘<?php } ?>‘,               $tmpl);
$tmpl = preg_replace(‘/{{include (.+?)}}/‘,  ‘<?php include $1.php; ?>‘, $tmpl);
$tmpl = preg_replace(‘/{{(.+?)}}/‘,          ‘<?php echo $1; ?>‘,        $tmpl);

好了,完美解决模板引擎的简单高效需求,还有什么自己的想法都可以添加进来哦!

原文地址:http://blog.51cto.com/13587708/2139749

时间: 2024-10-28 16:47:10

论PHP模板的简单高效实现的相关文章

简单高效!25个漂亮的简约风格网站设计作品

在过去几年里,网站设计领域发生了巨大变化.除了 RWD(响应式网页设计)和 Web 字体的革命,现代设计的发展趋势迅速流行扁平化的配色方案,网页排版变得更加重要,重点已放在内容第一.最后,页面加载速度已成为决定你的网站成功的关键因素. 所有这一切都导致了整洁美观和简单易用网页设计趋势的流行.所以,经过这些年的尝试和努力后,我们已经真正进入到了简洁干净的网页设计的时代.下面选择了25个简约干净的网站,具备我们上面提到的所有因素,他们都以自己的方式来呈现美丽,你有什么感想? 您可能感兴趣的相关文章

【c++】函数模板的简单应用

// 函数模板的简单应用 #include <iostream> using namespace std; template<typename Type> Type MAX(Type a, Type b) { return a > b ? a : b; } int main() { cout << MAX<float>(1.1,20) << endl; cout << MAX(10, 20) << endl; cou

BIP_Case_以RDF为数据源以RTF为模板的简单例子

一. 汇总    1. 建立rdf报表    2. 开发rtf模板    3. 建立可执行程式    4. 建立并发程式    5. 注册data defination    6. 注册template    7. 运行程式    8. 开发程式中间,需将输出模式修改为xml,产生xml文件,以做rtf开发准备原始数据 二.分步解析1. 建立rdf报表2. 开发rtf模板3. 建立可执行程式4. 建立并发程式5. 注册data defination6. 注册template7. 运行程式8. 开

jsp环境搭建 简单高效版

为了做一个jsp的小案例,首先最重要的是搭建好开发环境. 为此我在网上搜了很多教程,教程上都完全解决了,而我却因为粗心多花了1个小时,走了弯路.所以大家在配置的时候一定要细心哦~ 好,下面正式开启搭建之旅吧--> ·总体步骤: 注:下载前,请确定好你要用的jdk版本,因为jdk版本是要和tomcat的版本所对应的,本人因导师声明, 下载的是JDK1.7和tomcat7.0.X版本.myeclipse的话就用myeclipse10,当然更高版本也是OK的. 1.JDK下载安装-->配置环境变量

7.1 制作模板并简单编辑

在上一章中,首先介绍了一般网站的开发流程,其主要流程有需求分析.网站制作.测试网页和发布网站.随后简单讲解了淘宝网首页有哪些内容7最后着重研究了页面布局技术,其中框架布局和表格布局有存在的必要,不可抛弃,DIV层布局是未来的发展趋势. 从本章开始,我们将继续学习网站制作相关知识.所有的页面制作好之后,我们就要测试页面内容,来审视我们制作的页面是否美观,来检查页面中是否有死链接,来查看页面是否可以兼容不同的浏览器.测试完之后,为了使更多的人知道您的网站,就必须把我们制作.测试好的网站在网上进行发布

模板的简单介绍与使用

什么是模板? 模板(template)指c++中的函数模板与类模板,大体对应于C#和Java众的泛型的概念.目前,模板已经成为C++的泛型编程中不可缺少的一部分. 模板定义以关键字template开始,后接模板形参表,模板形参表是用尖括号括住的一个或者多个模板形参的列表,形参之间以逗号分隔. 模板形参可以是表示类型的类型形参,也可以是表示常量表达式的非类型形参.非类型形参跟在类型说明符之后声明.类型形参跟在关键字class或typename之后定义(至于class与typename的区别实际并不

(转)PHP模板smarty简单入门教程

转之--http://blog.163.com/[email protected]/blog/static/166861361201062595057962/ 如何在smarty中开始我们程序设计.PHP代码:--------------------------------------------------------------------------------    首先来介绍一下在上一节中我们使用的过的.php文件中的一些元素.同样,我们拿上一节中最开始的那个index.php文件来说

实验2:函数重载、函数模板、简单类的定义和实现

实验目的 1. 掌握c++中函数的声明.定义.调用和参数传递方式 2. 掌握c++中带有默认形参值的函数声明和定义方法 3. 理解函数重载,掌握c++中函数重载的实现方式 4. 理解函数模板,掌握c++中函数模板的简单使用 5. 理解面向对象的抽象和封装,掌握c++中类的定义.实现和使用方法 实验准备 1. 函数的声明.定义.调用.参数传递方法 2. 带有默认形参值的函数 3. 函数重载 4. 函数模板(9.1.1节 + 9.3节) 其中,9.3节,理解3个常用的排序算法和两个常用的查找算法 5

简单高效,分享几款我在使用的效率神器

做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 今天周六了,分享几款我目前在用的小工具,希望对你有用.使用工具的好处等等,我就不过多介绍了,下面文章的内容是先简单介绍这几款工具,然后说明一下我是怎么应用的.简单的一个思维导图,看下本文全貌: 神器介绍 1.火柴-效率神器 火柴官网(原火萤酱)是一款效率神器软件,支持Windows.Mac系统.具备文件秒搜,局域网秒传文件,局域网聊天的强大功能.[官网:http://huochaipro.com/] 有使用过Lista