Magike插件制作之一

January 23rd, 2008 5:38 PM

抛砖引玉之文,仅为即将发布的1.2.0做铺垫。具体的技术文档,请关注wiki的相关章节。在本文中我以如何制作一个显示评论表情插件为例,希望能对大家的开发有所帮助。此文首先假定你有基本的PHP知识,以及面向对象编程的基础。

声明一个插件

为了让系统识别你的插件,你需要声明这个插件。在Magike中,你只需要在./data/plugins下面建立一个插件目录,并在此插件目录下建立一个与目录同名的插件声明文件,并实现相应的方法即可。比如在本例中我们要制作一个表情插件,那么首先在./data/plugins下面建立一个名为emotion的目录,并在此目录下创建名为plugin.emotion.php的文件,这就是我们插件的声明文件,让我们看看在这个文件应该干些什么。

class EmotionPlugin extends MagikePlugin
{
    public function activate()
    {
        $this->fastPatch('callback','callback.emotion.php');
        $this->fastPatch('template','emotion.tpl');
        $this->clearCache();
    }
    
    public function deactivate()
    {
        $this->fastUnPatch('callback','callback.emotion.php');
        $this->fastUnPatch('template','emotion.tpl');
        $this->clearCache();
    }
    
    static public function information()
    {
        return 
        array(
            'name'      => '表情插件',
            'description' => '在评论中插入表情.',
            'version' => '0.0.1',
            'author'  => 'Joyqi',
            'homepage'=> 'http://www.joyqi.com',
        );
        }
    }
}

请注意,在Magike中编程是必须遵循严格的命名规则的,比如此文件名为plugin.emotion.php,那么它类名就必须为EmotionPlugin。类名采用骆驼法则,文件名采用下划线法则来分隔单词。在这个类中我们实现了三个方法,这也是其继承的父类MagikePlugin中声明必须实现的虚函数。这三个方法分别是:

  • activate,用于激活此插件。
  • deactivate,用于禁用此插件。
  • information,必须声明为静态方法,用于获取插件信息。

值得注意的是MagikePlugin类继承自MagikeModule类,所以你可以在方法中调用MagikeModule提供的方法,比如通过model实现复杂的数据库操作,等等。当我们实现了这三个方法之后,在后台的插件列表中就可以看到我们的插件了。

Magike, php

Comments (12)

  1. rizi January 27th, 2008 at 02:57 pm #1 Reply
    rizi

    汗 学习php中 只能等别人出插件了
    什么时候出1.2呢 我等着开博...

  2. Dc. January 29th, 2008 at 01:14 pm #2 Reply
    Dc.

    好久没来,发现改版都改成这样了

  3. Vichair January 30th, 2008 at 11:52 pm #3 Reply
    Vichair

    你可开始注意插件了

  4. pixer January 31st, 2008 at 04:09 pm #4 Reply
    pixer

    你什么时候回去啊

  5. 混蛋70 February 1st, 2008 at 04:05 pm #5 Reply
    混蛋70

    我已经在家里了

  6. wiLdGoose February 2nd, 2008 at 04:55 am #6 Reply
    wiLdGoose

    70,能上HB暴雪的PP吗?

  7. 混蛋70 February 2nd, 2008 at 10:59 am #7 Reply
    混蛋70

    似乎我回去以后,就没有什么雪了-_-!

  8. Christen May 11th, 2008 at 12:51 pm #8 Reply
    Christen

    你好,我安装了你开发的语法高亮插件,却不能正常工作,读不到插件中的css和scripts,不知是怎么回事?

  9. 混蛋70 May 11th, 2008 at 01:04 pm #9 Reply
    混蛋70

    你的code后面加了lang没

    这样

  10. Christen May 11th, 2008 at 08:37 pm #10 Reply
    Christen

    加了,查看源代码,标签已经转化为 ,但是网页的头部并没有读取插件必须的css和js代码,也就是说,{$static_var.syntax_highlighter_header}没有工作,不知问题何在?

  11. Christen May 11th, 2008 at 09:27 pm #11 Reply
    Christen

    问题解决,我不知是不是你记错了啊,我在code后面加 class="语言名称",竟然可以正常工作!

  12. 混蛋70 May 11th, 2008 at 10:48 pm #12 Reply
    混蛋70

    貌似是我记错了...

Leave a ReplyClick here to cancel reply

你可以在评论中使用以下标签 <code><blockquote>