使用自定义的模板引擎比较容易,都是自己定义的语法格式。但要记住,所有流行的模板引繁解决方案都遵循同样的一组相同的核心实现原则,就是与编程语言一样,学习了一种语言就可以更容易地掌握其他语言。使用模板引擎最主要的原因就是将前端工程师和后端工程师的工作分开,所以模板引擎不仅后端工程师需要使用,前端工程师也需要使用
1、后端工程师对模板引擎的使用
在PHP脚本中包含模板引擎类所在的文件。如下所示:
require("mytpl.class.php"); //包含模板引擎类,相当于模板引擎安装
创建模板引擎类的对象并对一些成员属性进行初始化赋值。如下所示:
$tpl=new MyTpl(); //创建模板引擎类的对象,也可以根据参数对成员初始化
将动态数据(包括标量和数组类型的数据,例如从数据库的表中获得的数据数组)使用模板引擎对象中的assign()方法分配给模板文件,这个方法可以使用多次,将任意多个变量分配给模板。如下所示:
$tpl->assign("var","this is a value"); //可以分配标量类型数据,可以使用多次
$tpl->assign("arr",array(array(1,2),array("a","b"))); //也可以分配数组包括多维数组
在PHP脚本中通过调用模板对象中的display()方法,并将模板文件名作为参数传入,就会加载指定目录中对应的模板文件到PHP脚本中。再通过模板引擎中的替换方法对模板中自定义的语法进行解析,然后输出处理后的模板。如下所示:
$tpl->display("test.tpl"); //参数“test.tpl”为特定目录下的模板文件
2、前端工程师对模板引擎的使用
前端工程师需要将编写的模板文件存放到指定的目录中,这个目录是通过在模板对象中使用$template_dir属性指定的,默认的设置是当前目录下的“templates”目录。另外,模板文件的命名以及后缀名的设置可以随意,例如index.tpl、test.htm、header.tp;等
模板文件是通过使用HTML、CSS以及javascript等Web前台语言以编写的纯静态负而。但可以在模板文件中使用“<{”和“}>”两个分隔符中间定义一个变量(类似PHP中的变量格式),该变量可以接受并输出由PHP脚本中分配过来的动态数据。在模板中使用的“<{”和“}>”两个分隔符对,也可以根据个人爱好在模板引擎类中修改。如下所示:
姓名:<{$name}>,年龄:<{$age}>,性别:<{$sex}> //模板中使用占位符
如果在PHP脚本中是将数组分配给模板,也可以在模板中进行遍历,还可以通过嵌套的方式遍历多维数组。使用的是在模板引擎中定义的“<{loop}>”标记对,使用的方式和PHP中foreach结构的语法格式相似。如下所示:
<{loop $arr $value }> //遍历数组$arr中的元素值
数组中的元素值<{$value}> //每次遍历输出元素中的值
<{/loop}> //在模板中遍历数组的结束标记
<{loop $arr $key=>$value }> //遍历数组$arr中的元素下标和元素值
数组中的元素键<{$key}> //每次遍历输出元素中的下标
数组中的元素值<{$value}> //每次遍历输出元素中的值
<{/loop}> //在模板中遍历数组的结束标记
<{loop $arr $value }> //遍历数组$arr中的元素值
<{loop $arr $data }> //使用嵌套标记遍历二维数组
数组中的元素值<{$value}> //每次遍历输出元素中的值
<{/loop}> //在模板中遍历数组的内层结束标记
<{/loop}> //在模板中遍历数组的外层结束标记
PHP有序表查找之插值查找算法示例这篇文章主要介绍了PHP有序表查找之插值查找算法,简单分析了插值查找算法的概念、原理并结合实例形式分析了php实
ThinkPHP整合datatables实现服务端分页的示例代码下面小编就为大家分享一篇ThinkPHP整合datatables实现服务端分页的示例代码,具有很好的参考价值,希望对大家有所帮
PHP实现APP微信支付的实例讲解下面小编就为大家分享一篇PHP实现APP微信支付的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小
PHP实现的多维数组排序算法分析这篇文章主要介绍了PHP实现的多维数组排序算法,结合实例形式对比分析了php针对多维数组及带有键名的多维数组进行
php+ajax实现无刷新文件上传功能(ajaxuploadfile)这篇文章主要为大家详细介绍了php结合ajaxuploadfile实现无刷新文件上传功能,具有一定的参考价值,感兴趣的小伙伴们
PHP的RSA加密解密方法以及开发接口使用本篇文章给大家详细介绍了PHP开发接口使用RSA进行加密解密方法,对此有兴趣的朋友可以学习下。