什么是模板引擎
顾名思义,这是个模板解析的工具。他是为了解决mvc,实现数据和展示分离问题而产生的。php模板引擎由来已久,比如老大哥smarty。已经很少有人用了。毕竟现在mvc已经很成熟,很多框架都有自己的模板引擎。比如Symfony的twig,Laravel的blade。
性能损耗?
模板引擎开始出现的时候,有很多人质疑,认为有性能问题。但其实这是没有必要的。毕竟模板引擎只是编译一次,把相应的模板语法利用正则替换成php语句,然后存储成php文件就完成任务了,后续的运行其实是载入php文件。多出来的仅仅是一个是否存在编译文件的判断而已。对于现在的计算速度来说可以忽略。
为什么要用模板引擎
1 从繁琐的php标签中脱离出来,从而提高代码的可读性
2 将数据处理和视图展示分离,视图只负责展示和基本的逻辑判断
3 很好的进行视图拆分,组织结构
模板引擎比较
除了目的,还有一个不可忽视的问题,是否易学,如果一个模板引擎需要用几个小时去学习,那这样的学习成本太高了。作为一个工具应该简单易学,其次是能满足需求,功能要完善。
看一下比较主流的模板引擎的使用
twig,他的使用语法我比较喜欢,很容易看懂,简单易学
1 | 复制代码基本语法 |
再看看blade
1 | 复制代码<!-- 文件保存于 resources/views/layouts/app.blade.php --> |
上面可以看出,blade就比twig复杂多了,如果不看说明,你没法理解上面代码的意思。为什么没有累出smarty,因为它更复杂,现在使用的人也比较少了。
我们总结以下,一个模板引擎应该具备以下功能
1 数据块block/section 这是一个很强大的功能,可以灵活的控制每一个展示块
2 继承机制parent 使用parent继承调用布局中的内容块
3 多文件组合include 利用include可以将多个模板组合到一起,实现多种不同场景下的代码复用
4 灵活的变量函数以及常量使用
5 优雅的标签逻辑控制 你可以充分利用ide软件的代码提示和自动完成功能,而不需要安装特殊插件
6 模板自动监听 当模板更新时,刷新页面,模板引擎会自动进行编译,展示最新内容
今天的主角
在具有上面总结的所有功能的前提下,看看今天的主角是怎么解决易学,可读这两个难题的。
布局
1 | 复制代码<!--布局文件的代码--> |
是不是清爽至极。定义不同的block标签,灵活的控制内容和位置,内容模板的内容会默认覆盖布局文件的相同block块。还可以在内容模板,用parent标签调用布局文件中的内容。
使用html标签的方式进行代码书写,可以在所有ide软件中实现代码不全。上面的代码实现了展示块定义,内容模板展示块覆盖布局模板,以及继承和,外部引入include。
变量 常量 函数的使用
当然,除了对模板的总体管理,模板中还要有流程控制和变量输出。
1 | 复制代码//变量 |
流程控制
if判断
1 | 复制代码 <if ($var>1)> |
for循环
1 | 复制代码 |
for in
1 | 复制代码 |
foreach 跟源生php写法对应只是换成了php标签形式
1 | 复制代码 <foreach ($array as $item)> |
php中初始化
1 | 复制代码include "../Template.php"; |
喜欢的朋友欢迎star github.com/shooke/temp…
本文转载自: 掘金