技术开发 频道

PHP开发必备 PHP模版引擎Dwoo深入学习

  三、编写自己的插件

  Dwoo中的一个前大功能是能可以让开发者编写插件,并通过Dwoo的addplugin机制加载自己写的类,现举一个简单例子说明。比如下面的代码,封装了对email的操作:

<?php
function fix_address(Dwoo $dwoo, $str) {
    
return str_replace(
      
array('@', '.', '-'),
      
array(' at ', ' dot ', ' dash '),
      
$str
    );
}
include 'dwooAutoload.php';
try {
  
$dwoo = new Dwoo();
  
$tpl = new Dwoo_Template_File('tmpl/plugin.tpl');
  
$dwoo->addPlugin('email_safe', 'fix_address');
  
$data['string']= 'vikram@example.com';
  
$dwoo->output($tpl, $data);
}
catch (Exception $e) {
  
echo "Error: " . $e->getMessage();      
}
?>

   在这个例子中,我们想将用户EMAIL中的象@,分隔符等符号用英文替换掉,这样防止象网上机器人等去采集EMAIL,泄露私隐。其中fix_address方法为替换的方法。而通过dwoo中的addPlugin方法,命名一个插件,名字为email_safe,而插件的内容则指定为fix_address方法。在使用这个插件时,可以如下使用,plugin.tpl内容为:

{email_safe($string)}

  下图为输出结果:

编写自己的插件

  而另外一种使用dwoo插件的方法为继承Dwoo_Filter abstract class,如下:

<?php
class Dwoo_Plugin_email_safe extends Dwoo_Plugin
{      
    
public function process($email)
    {
        
return str_replace(
          
array('@', '.', '-'),
          
array(' at ', ' dot ', ' dash '),
          
$email
        );
    }
}
?>

   如果用这种方式的话,则可以把该文件保存在dwoo目录下的plugins目录下,则dwoo的自动加载机制会自动加载这个插件,而不用每次使用时都使用addplugin的功能。

0
相关文章