| 
 下面是一个简单插件的实现。 
<? /**  * 这是一个Hello World简单插件的实现  *  * @package        DEMO  * @subpackage    DEMO  * @category    Plugins  * @author        Saturn  * @link        http://www.cnsaturn.com/  */  /**  *需要注意的几个默认规则:  *    1. 本插件类的文件名必须是action  *    2. 插件类的名称必须是{插件名_actions}  */  class DEMO_actions  {      //解析函数的参数是pluginManager的引用      function __construct(&$pluginManager)      {          //注册这个插件          //第一个参数是钩子的名称          //第二个参数是pluginManager的引用          //第三个是插件所执行的方法          $pluginManager->register('demo', $this, 'say_hello');      }            function say_hello()      {          echo 'Hello World';      }  }  ?> 
这是一个简单的Hello World插件,用于输出一句话。在实际情况中,say_hello可能包括对数据库的操作,或者是其他一些特定的逻辑,比如调用Akimet API。 
插件实现的默认规则由核心系统开发者自行确定。比如本例的一些默认规则我在注释中已经写的很清楚,在此不在赘述。需要特别注意的是钩子名称不要重复。 
最后一步,就是定义钩子的触发,你将钩子放在哪里,上面这个插件的方法就会在哪里出发。比如我要将say_hello放到我博客首页Index.php,那么你在index.php中的某个位置写下: 
$pluginManager->trigger('demo',''); 
第一个参数表示钩子的名字,在本例中它是demo;第二个参数是插件对应方法的入口参数,由于这个例子中没有输入参数,所以为空。 
总结 
本篇文章介绍了插件机制在PHP中实现的一种方法和思路,以及我本人对插件机制的理解。初次接触这个东西,可能会比较生涩,难以理解。但是当你结合真实的例子,再想想程序的运行流程,思路可能会更清晰一些。 
经典论坛交流: http://bbs.blueidea.com/thread-2948641-1-1.html 
本文链接:http://www.blueidea.com/tech/program/2009/7153.asp  
出处:蓝色理想
 
责任编辑:bluehearts 
上一页 PHP中插件机制的一种实现方案 [2] 下一页 
◎进入论坛网络编程版块参加讨论
	       |