加入收藏 | 设为首页 | 会员中心 | 我要投稿 莆田站长网 (https://www.0594zz.com.cn/)- 业务安全、应用安全、终端安全、数据分析、数据应用!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

一文详细PHP模板引擎的原理

发布时间:2022-08-10 10:58:46 所属栏目:PHP教程 来源:互联网
导读:开发一个web项目,通常分为两部分,一部分是GUI,即界面、美工,使用HTML,CSS,JS编写,另一部分则是业务逻辑,即程序、功能,使用PHP编写。而模板引擎则是联系这两部分的桥梁,可理解成一个PHP类,里面定义了许多方法,实现了将PHP的原始输出加载上界面样式
  开发一个web项目,通常分为两部分,一部分是GUI,即界面、美工,使用HTML,CSS,JS编写,另一部分则是业务逻辑,即程序、功能,使用PHP编写。而模板引擎则是联系这两部分的“桥梁”,可理解成一个PHP类,里面定义了许多方法,实现了将PHP的原始输出加载上界面样式后再输出。
  没用模板之前的编写的代码是这样的:
 
 
  <?php
 
   
 
  $title = “标题”;
 
   
 
  $content = “内容”;
 
   
 
  ?>
 
   
 
  <html>
 
   
 
  <head><title><?php echo $title; ?></title></head>
 
   
 
  <body><?php echo $content; ?></body>
 
   
 
  </html>
 
  这样的话美工与逻辑没有分离,简单的说就是PHP程序员不仅要写程序还要精通美工,这往往十分困难,因此需要将这两部分工作分开。
 
  在此通过自己创建一个简单的模板引擎为例子,更好的体会模板引擎的原理。
 
  之前说了开发一个web项目分成GUI与业务逻辑两部分,因此我们创建两个文件夹,一个命名为“templates”,里边存放模板,新建一个tpl.html文件,另一个命名为“PHP”,里边存放业务逻辑,新建一个index.php文件。
 
  tpl.html文件代码通常是这样:
 
 
 
  <html>
 
   
 
  <head><title><{$title}></title></head>
 
   
 
  <body><{ $content;}></body>
 
   
 
  </html>
 
  可以看出来,和之前的代码相比,tpl.html中只有html代码,没有php代码,但是增加了新的标签,这类标签是自己定义的,里面的内容只有经过模板引擎编译后才能被识别,编译后的文件存放在“templates_c”文件夹下。这个文件主要是界面设计用的,将大量使用到CSS,JS等技术。
 
  这时候tpl.html和index.php仍旧是分离的,互不干扰,因此需要一个“桥梁”连接,即模板引擎,其实就是一个PHP类,故在此可以创建一个mytpl.class.php的PHP文件。
 
  mytpl.class.php文件通常定义一个类MyTpl,类中需定义一个数组tpl_var[]用于存放tpl.html中自定义内容标签的参数,此外还需定义一些方法,这些方法最主要的目的是将tpl.hml中无法识别的的内容标签转换成PHP语句,然后再写到一个“templates_c”文件夹下的tpl_c.html中,这个过程就是所谓的编译。
 
  通常tpl_c.html文件的代码是这样的:
 
 
 
  <html>
 
   
 
  <head><title><?php echo $this->tpl_var[“title”]; ?></head>
 
   
 
  <body><?php echo $this->tpl_var[“content”]; ?}></body>
 
   
 
  </html>
 
  可以看出上面的代码是可以被识别的,因为自定义的内容标签已经被替换成PHP语句了,但是title和content的值是多少我们还不得而知,这时候之前创建的index.php要上场了.
 
  index.php通常它代码是这样的:
 
 
 
 
  include  “tpl.class.php文件”;//加载模板引擎
 
   
 
  $tpl = new MyTpl();//实例化一个模板类
 
   
 
  $title = “标题”;
 
   
 
  $content = “内容”;
 
   
 
  $tpl->assign(“title”,$title);//调用模板类中的方法,分配变量
 
   
 
  $tpl->assign(“content”,$content);
 
   
 
  $tpl->display(“tpl.html”);//调用模板类中的方法,用于显示编译后的内容
 
  上面的代码只是一些简单的描述代码,其中的变量的值可以是直接定义的也可以是从数据库中获取的,此外该文件还可以编写一些复杂的PHP程序,这也就是之前说的业务逻辑。
 
  这样GUI和业务逻辑的工作就分离了,美工设计人员只需要编写模板文件就可以改变web的界面,而PHP程序员则可以专心编写自己的程序。
 
  公司内部一般都有自己的模板引擎,而通常模板引擎自己写的话完全没有必要,因为市面上已经有一些很成熟的模板引擎了,比如Smarty,我们只需要懂得如何使用它就好了。

(编辑:莆田站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读