解说PHP中插件机制的一种实现方案(2)_PHP教程

编辑Tag赚U币
教程Tag:暂无Tag,欢迎添加,赚取U币!

推荐:接续CKEditor如何上传图片配置PHP语言
CKEditor的原包中没有包含图片的上传服务器端处理文件,其公司的另一款开源产品:CKFinder做了很好的补充。但是要下载这个源代码再进行配置,虽然方便了很多,但是仅仅为了上传图片,却要使用这么大的整个系统来使用,确实有点大材小用,我花了一个下午的时

 

下面是一个简单插件的实现。

以下为引用的内容:

<?
/**
* 这是一个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;第二个参数是插件对应方法的入口参数,由于这个例子中没有输入参数,所以为空。

分享:新浪微博PHPcurl发信接口
新浪微博已开放很久但是无奈一直不提供api.网上也没搜索到相应的,因此风吟自己写了一个函数。可以发送到新浪微博。跟大家分享,希望官方能及早开放API。诞生更多应用. 以下为引用的内容: ?php /* -------------------------------------------------------

共2页上一页12下一页
来源:模板无忧//所属分类:PHP教程/更新时间:2009-11-18
相关PHP教程