PHP开发必备 一步步学PHP模版引擎Dwoo

  • 来源: IT168网 作者: 戴九军   2011-04-25/16:44
  •       PHP目前是使用最广泛的脚本解析动态语言之一。在PHP的开发当中,开发者都很关心的一个问题是,如何最大程度地将页面和商业逻辑分离。而目前的很多PHP的开发框架,在这方面都有很好的解决方案,比如Zend,Agavi,CakePHP和CodeIgniter。然而,假如你的项目不是太大而没使用这些框架时,则可以选用一些开源的PHP模版引擎来实现页面和逻辑的分离,目前比较著名的有Smarty。本文将介绍另一款新兴的PHP模版引擎Dwoo,它同样有很多优点,值得读者去学习。

          一、安装Dwoo

          首先到Dwoo的官方网站下载(http://www.dwoo.org)最新的版本1.1.7。在下载后,解压dwoo,将解压目录命名为dwoo,当然,你也可以用pear的安装方法安装,方法为:

    pear channel-discover pearhub.org
    pear install pearhub/Dwoo

          二、Dwoo模版简介

          在Dwoo中,跟象Smarty等模版引擎差不多的是,它允许用户用普通的HTML编辑工具编辑表现层的页面,然后在需要产生动态内容的地方用占位符表示。模版引擎在解析的时候,会把如数据库中的或者业余逻辑计算结果填充到这些占位符中。下面先看一个简单的例子。

          我们先建立一个模版文件,Dwoo的模版文件默认是tpl,当然你也可以改为其他文件后缀。模版文件名为knock.tpl,把它保存在template文件夹中,内容为:

    <html>
      
    <head></head>
      
    <body>
        
    <blockquote>

        Knock knock!
    <br/>
        Who's there?
    <br/>
        {$name}      
    <br/>
        {$name} who?
    <br/>
        {$punchline}
        
    </blockquote>

      
    </body>
    </html>

          可以看到,在Dwoo中,模版文件中,把需要动态更替的内容用{$ }这样的形式包裹起来,作为占位符,占位符当中的内容到时会被自动更替为实际的内容。接下来看如何使用Dwoo,代码如下:

       <?php

    include 'dwooAutoload.php';

    // 创建dwoo实例
    $dwoo = new Dwoo();

    //读取模版文件
    $tpl = new Dwoo_Template_File('tmpl/knock.tpl');

    // 对模版变量赋值
    $data = array();
    $data['name'] = 'Boo';
    $data['punchline'] = 'Don\'t cry, it\'s only a joke';

    // 将实际内容输出到模版
    $dwoo->output($tpl, $data);
    ?>

          下面是使用Dwoo的几个步骤

          1、首先要包含Dwoo自动装载类dwooAutoload.php,这个类是自动加载了Dwoo模版所需要的其他依赖的类和工具类;

          2、创建Dwoo类的实例;

          3、通过new Dwoo_Template_File的方法加载模版,其中的参数为模版文件所在的路径;

          4、设置要向模版文件中输出的替换内容,在Dwoo中,只需要通过定义一个关联数组的方法即可,数组中每个元素的名称跟模版文件中的占位符一一对应,数组中的每个值,就是要替换模版中的实际内容;

          5、通过调用output方法,将数据向模版中输出,传入的参数为输出的数组内容和模版路径。

          下面为输出结果:

          Knock knock!

          Who's there?

          Boo

          Boo who?

          Don"tcry,it"s only a joke


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多