从模板文件中读取显示用的HTML代码。

将模板文件和实际生成的数据结合,生成输出的结果。

允许同时处理多个模板。

允许模板的嵌套。

允许对模板中的某个单独的部分进行处理。

归纳上述任务,模板类的设计目标为:从多个模板文件中读入显示的HTML代码,将这些显示代码中需要动态数据的地方替换为PHP程序运算所得出的数据,然后按照一定的顺序输出。其中,替换的部分可以自由的设定。

读取显示用的HTML代码采用读文件的方式

模板文件和数据的结合采用正则替换

处理多个模板用数组存储来实现。

模板的嵌套的实现主要的想法是:将模板和输出(任何中间的分析结果)一视同仁,都可拿来做替换,即可实现。

单独部分的处理的通过在模板文件中设定标注,然后在正则替换中结合标注来控制,实现部分替换。

二、模板处理类的实现

请参看 PHPLib 中的 Template.inc,总共 345 行代码,有详细的注释。以下列举一些主要的函数,供研读参考:

1) function set_file($handle,$filename=” ”) line 77, 读取文件

2) function set_var($varname, $value = "") line 119, 设置映射数据-替换变量

3) function set_block($parent, $handle, $name = "") line 96, 设置标注

4) function subst($handle) line 136, 执行数据替换

5) function parse($target, $handle, $append = false) line 165, 执行模板文件与数据的结合

6) function p($varname) line 268, 输出处理结果

注:本人下载的php-lib7.2c的Template.inc文件中的第95行少了个“/”,加上后使用正常。

三、模板处理类的使用

3.1 最基本的例子

为了简单起见,这里假设模板文件、使用模板的PHP文件和模板处理类的文件都放在同一个目录下。PHPLIB中的习惯是使用ihtml后缀为模板文件的后缀。

下面是要使用的模板文件:

使用模板的测试

这是一个使用模板的测试文件!

当前的时间是{currenttime}!

注:模板文件和通常的 HTML 文件差不多,唯一不同的是使用“{}”括起来的是可以被模板处理类替换的动态内容的变量。

接下来使用模板处理类来处理上面的模板:

//引入Template类include("template.inc");//得到需要替换的数据$timeNow=date("Y-m-d H:i:s",time());//实例化一个Template类$template= newTemplate();//载入test.ihtml模板$template->set_file("handle1","test.ihtml");//使用$timeNow的值替换模板中的currenttime$template->set_var("currenttime",$timeNow);//进行实际的模板操作$template->parse("output","handle1");//输出最后结果$template->p("output");?>

php web开发应用教程,PHP-Web 应用程序开发:使用模板_PHP相关推荐

  1. 好程序员web前端教程分享web前端入门基础知识

    好程序员web前端教程分享web前端入门基础知识,作为合格的Web前端工程师必须得掌握HTML.CSS和JavaScript.只懂其中一两个还不行,必须对这三门语言都要熟悉.下面我们一起来看一看吧! ...

  2. 微信小程序python入门教程-2020Python+微信小程序开发实战(视频+课件)

    本套课程出自老男孩IT教程的Python+微信小程序开发实战官网售价79元,课程基于微信小程序平台开发的的拍卖系统.课程分为4个章节微信小程序快速入门用微信小程序快速开发认证和发布动态模块,第二章拍卖 ...

  3. 微信小程序开发template模板使用

    在小程序开发过程中,一个项目需要在多处页面使用类似的模块,就需要创建模板减少代码量,同时提高代码复用度.小程序通过template 标签使用模板,template 标签的 is 属性与模板的 name ...

  4. Libusb开发教程三 USB设备程序开发

    首先,需要指出本篇博客的基础仍然是基于 libusb V1.0 以下.主要考虑到保持与之前博客的连贯性,在上一篇博客中介绍了老版本中可以被调用的 API 以及功能介绍,对于库中 API 接口函数的使用 ...

  5. 2019最新微信小程序开发制作模板

    闪云科技小程序,包含多样化的模板和可视化操作页面,能够快速创建各类版本小程序. 单页版: 单页版小程序是单页面的广告墙,主要功能包括:富文本.图片展示.视频播放.地图导航.电话拨打,为创业者提供形象展 ...

  6. 微信小程序开发02(模板语法与事件绑定)

    模板语法与事件绑定

  7. 响应式网站建设小程序开发网站模板源码

    模板信息: 模板编号:11841 模板编码:UTF8 模板颜色:黑白 模板分类:IT.软件.互联网.游戏 适合行业:网站建设类企业 模板介绍: 本模板自带eyoucms内核,无需再下载eyou系统,原 ...

  8. 软件开发,web开发和应用程序开发的区别?

    软件开发: 软件开发是开发软件产品的过程,涉及分析用户的需求,然后设计.测试和开发软件以满足用户的这些需求或要求.软件是使用特定的编程语言开发的,这反过来又提高了业务质量.  Web开发: Web开发 ...

  9. idea导入web项目教程

    idea导入web项目教程 导入web工程 直接选择要打开的工程,new window file->Project Setting->Project 注意选择jdk(我的是1.8版本) f ...

最新文章

  1. CF1006E Military Problem
  2. Going Home
  3. 操作符offset和seg
  4. linux sftp目录无法切换,linux – SFTP用户无法编辑或创建文件
  5. Vue版todolist案例
  6. c# 静态构造函数与私有构造函数共存
  7. shift用计算机,电脑Shift键的妙用,你都了解吗?
  8. SAP License:MM-采购订单migo,101收货,有三种方式冲销,可以使库存减少,有何不同?
  9. [转载] Flask+Celery+Redis简单操作
  10. 第一届佳木斯大学程序设计校赛题解
  11. 一个在线排版小工具:中文、英文、数字、符号中间加个空格
  12. 【色彩管理】CMYK色彩模式详解
  13. 对RS232接口的详细攻破
  14. 亚马逊测评账号关联因素有哪些?
  15. android x86 mip,mip-appdl
  16. 多方位玩转“地平线新发布AIoT开发板——旭日X3派(Sunrise x3 Pi)” 插电!开机!轻松秒杀!
  17. Redux的工作流程
  18. aws认证,aws有哪些认证,有什么用
  19. 大数据开发之在idea中开发第一个hadoop程序
  20. Cisco IPCC概述

热门文章

  1. 网站建设PHP中mysql和mysqli的区别
  2. 原码、反码、补码的运算 【2分钟掌握】
  3. docker配置数据默认存储路径:--graph已过时,新版本中使用--data-root代替
  4. Scala偏函数使用示例
  5. K8S部署工具:KubeOperator集群部署
  6. Ansible Playbook企业案例:利用 playbook 安装 nginx、安装和卸载 httpd、安装mysql
  7. Spark Operator资料收集
  8. 在 KubeSphere 中部署 Harbor
  9. git简明教程:基本操作命令
  10. Scala模式匹配:对象匹配