牛骨文教育服务平台(让学习变的简单)
博文笔记

PHP-关于模板的原理和解析

创建时间:2016-04-11 投稿人: 浏览次数:2857

将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" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>title>   head> <body> {include "test.php"} {#}这是一条PHP的注释,在HTML页面里是不显示的,只会在生成的编译文件里显示{#} 我将被index.php导入 {$name}这个标签必须经过Parser.class.php这个解析类来解析它1 <br /> 这里的内容改变了,为什么? <br /> {if $a} 显示一号皮肤 {else} 显示二号皮肤 {/if} <br /> {foreach $array(key,value)} {@key}....{@value} <br /> {/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 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 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 //Parser.class.php     class Parser {         //获取模板内容         private $_tpl;         //构造方法,初始化模板         
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。