已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PHP 关于模板的原理和解析 将 PHP 代码和静态 HTML 代码进行分离 使代码的可读性和维护性得到显著提高 使用模板引擎 我们所说的模板是 Web 模板 是主要由 HTML 标记组成的语言来编写的页面 但也有如何 表示包含动态生成内容的方式 解析标签 模板引擎是一种软件库 允许我们从模板生成 HTML 代码 并指定要包含的动态内容 模板引擎的特点 1 鼓励分离 让更个系统的可读性和维护性得到提高 2 促进分工 使得程序员和美工去专心处理自己的设计 3 比 PHP 更容易解析 编译文件和缓存文件加载更快 占资源更少 4 增加安全性 可限制模板设计师进行不安全的操作的能力避免误删误访问等 模板处理的流程图 创建模板 1 创建初始模板所需要的文件夹和文件 a index php主文件 用于编写业务逻辑 b template inc php模板初始化文件 用于初始模版信息 c templates目录存放所有的模板文件 d templates c目录存放所有编译文件 e cache目录存放所有缓存文件 f includes目录存放所有的类文件 g config目录存放模板系统变量配置文件 以下是源码 主文件 index php php index php 设置编码为 UTF 8 header Content Type text html Charset utf 8 网站根目录 define ROOT PATH dirname FILE 存放模板文件夹 define TPL DIR ROOT PATH templates 编译文件夹 define TPL C DIR ROOT PATH templates c 缓存文件夹 define CACHE DIR ROOT PATH cache 定义缓存状态 define IS CACHE true 设置缓存状态开关 IS CACHE ob start null include ROOT PATH includes Templates class php name 方块李 array array 1 2 3 4 5 6 tpl new Templates tpl assign name name tpl assign a 5 4 tpl assign array array 显示 tpl display index tpl 模板文件 HTML 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 DOCTYPE html PUBLIC W3C DTD XHTML 1 0 Transitional EN TR xhtml1 DTD xhtml1 transitional dtd title head include test php 这是一条 PHP 的注释 在 HTML 页面里是不显示的 只会在生成的编译文件里显示 我将被 index php 导入 name 这个标签必须经过 Parser class php 这个解析类来解析它 1 这里的内容改变了 为什么 if a 显示一号皮肤 else 显示二号皮肤 if foreach array y value key value foreach body html 模板类 View Code 解析类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 Parser class php class Parser 获取模板内容 private tpl 构造方法 初始化模板 public function construct tplFile 判断文件是否存在 if this tpl file get contents tplFile exit ERROR 读取模板出错 解析普通变量 private function parVar pattern w if preg match pattern this tpl this tpl preg replace pattern vars 1 this tpl 解析 IF 条件语句 private function parIf 开头 if 模式 patternIf if s w 结尾 if 模式 patternEnd if else 模式 patternElse else 判断 if 是否存在 if preg match patternIf this tpl 判断是否有 if 结尾 if preg match patternEnd this tpl 替换开头 IF this tpl preg replace patternIf vars 1 this tpl 替换结尾 IF this tpl preg replace patternEnd this tpl 判断是否有 else if preg match patternElse this tpl 替换 else this tpl preg replace patternElse this tpl 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 else exit ERROR 语句没有关闭 解析 foreach private function parForeach patternForeach foreach s w w w patternEndForeach foreach foreach 里的值 patternVar w 判断是否存在 if preg match patternForeach this tpl 判断结束标志 if preg match patternEndForeach this tpl 替换开头 this tpl preg replace patternForeach vars 1 as 2 3 this tpl 替换结束 this tpl preg replace patternEndForeach this tpl 替换值 this tpl preg replace patternVar this tpl else exit ERROR Foreach 语句没有关闭 解析 include private function parInclude pattern include s if preg match pattern this tpl file 判断头文件是否存在 if file exists file 1 empty file 1 exit ERROR 包含文件不存在 替换内容 this tpl preg replace pattern this tpl 解析系统变量 private function configVar pattern if preg match pattern this tpl file this tpl preg replace pattern config 1 this tpl 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 解析单行 PHP 注释 private function parCommon pattern if preg match pattern this tpl this tpl preg replace pattern this tpl 生成编译文件 public function compile parFile 解析模板变量 this parVar 解析 IF this parIf 解析注释 this parCommon 解析 Foreach this parForeach 解析 include this parInclude 解析系统变量 this configVar 生成编译文件 if file put contents parFile this tpl exit ERROR 编译文件生成失败 总结 模板引擎的整个过程 1 当浏览器请求 index php 文件时 实例化模板类对像 tpl new Templates 2 当 Templates 实例化的时候 生成两个数组 一个用来存放模板变量 另一个存放系 统变量 通过构造方法 判断文件夹是否存在 同时通过 XML 文件将系统变量数组初始化 3 通过模板类 Templates 的注入方法 assign 将对应模板 index tpl 中变量的 index php 的内容注入到模板类的私有变量 完成初始化 4 模板类 Templates 类显示方法 display 通过实例化解析类 Parser 将取到的注入 变量通过解析类进行解析 即替
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 光大银行产品类培训课件
- 2025年中职历史(世界近现代史)试题及答案
- 2026年口腔预防(龋齿填充材料)试题及答案
- 2025年大学资源循环工程(工业固废回收)试题及答案
- 2025年中职数据库运维(数据存储维护)试题及答案
- 2025年高职数字媒体类(数字媒体性能测试)试题及答案
- 2025年大学大一(运动人体科学)运动解剖学基础阶段试题
- 2025年大学大四(计算机科学与技术)毕业设计指导综合测试题及答案
- 2025年高职(酒店管理综合实训)服务提升实操试题及答案
- 2025年大学大三(药学)药事管理学阶段测试题及答案
- 高中地理思政融合课《全球气候变暖》
- 《山东省市政工程消耗量定额》2016版交底培训资料
- 《中医六经辨证》课件
- 挂名合同协议书
- 苏教版高中化学必修二知识点
- 2024年国家公务员考试国考中国人民银行结构化面试真题试题试卷及答案解析
- 2025年中考语文一轮复习:民俗类散文阅读 讲义(含练习题及答案)
- 高中数学选择性必修一课件第一章 空间向量与立体几何章末复习(人教A版)
- 标准商品房买卖合同文本大全
- LY/T 3408-2024林下经济术语
- 2025年湖南邵阳市新邵县经济开发区建设有限公司招聘笔试参考题库附带答案详解
评论
0/150
提交评论