下面是一个简单插件的实现
。 <?
/**
*这是一个HelloWorld简单插件的实现
*
*@packageDEMO *@subpackageDEMO *@categoryPlugins *@authorSaturn *@linkhttp://www.cnsaturn.com/ */
/**
*需要注意的几个默认规则:
*1.本插件类的文件名必须是action
*2.插件类的名称必须是{插件名_actions}
*/
classDEMO_actions
{
//解析函数的参数是pluginManager的引用
function__construct(&$pluginManager)
{
//注册这个插件
//第一个参数是钩子的名称
//第二个参数是pluginManager的引用
//第三个是插件所执行的方法
$pluginManager->register('demo',$this,'say_hello');
}
functionsay_hello()
{
echo'HelloWorld';
}
}
?>
这是一个简单的HelloWorld插件
,用于输出一句话
。在实际情况中
,say_hello可能包括对数据库的操作,或者是其他一些特定的逻辑,比如调用AkimetAPI。
插件实现的默认规则由核心系统开发者自行确定。比如本例的一些默认规则我在注释中已经写的很清楚,在此不在赘述。需要特别注意的是钩子名称不要重复。
最后一步,就是定义钩子的触发,你将钩子放在哪里,上面这个插件的方法就会在哪里出发。比如我要将say_hello放到我博客首页Index.php,那么你在index.php中的某个位置写下:
$pluginManager->trigger('demo','');
第一个参数表示钩子的名字,在本例中它是demo;第二个参数是插件对应方法的入口参数,由于这个例子中没有输入参数,所以为空。
总结
本篇文章介绍了插件机制在
PHP中实现的一种方法和思路,以及我本人对插件机制的理解。初次接触这个东西,可能会比较生涩,难以理解。但是当你结合真实的例子,再想想程序的运行流程,思路可能会更清晰一些。