DokuWiki

It's better when it's simple

用户工具

站点工具


侧边栏

本页面的其他翻译?:

了解DokuWiki

进阶使用

商用

我们的社区


Facebook, Twitter 或其他社交网络上关注我们.

zh:devel:helper_plugins

辅助(Helper)插件

兼容的版本 Dokuwiki

2017-07-20

plugin

最后更新于
2017-07-20

插件名称包含下划线,无法产生受欢迎度点数。

作者 Kuma

辅助(Helper)插件使插件开发人员可以使用其他现有插件的功能。例如维基页面列表显示,不需要重新发明轮子——而不是使用Pagelist插件。看看辅助插件的列表。



如何使用一个辅助插件

辅助插件可以用一种简单的方式从另一个插件中使用。

$tag = $this->loadHelper('tag'); // 或 $this->loadHelper('tag', true);
 
if($tag) {
    $entries = $tag->tagRefine($entries, $refine);
}

loadHelper($name, $showmsg = true) 是一种由所有插件继承的方法。它需要两个参数,而第二个是可选的。

  • 第一个参数是要辅助插件的名称。
  • 第二个表示是否应该在加载帮助插件失败时显示错误消息(这个消息不是本地化的,也不能本地化)。

自2013-05-10 Weatherwax 以来 loadHelper() 也是可用的在语法插件。

如果你想在2012-10-13“Adora Belle”的版本中使用一个辅助插件,并且在你必须使用plugin_load($type, $name)函数在之前。它接受两个参数:

  • 第一个是插件类型,
  • 第二个是你想要使用的插件的名字。

此外 plugin_isdisabled($name) 还可以用来检查插件是否可用。

if(!plugin_isdisabled('tag')) {
    $tag = plugin_load('helper', 'tag');
    $entries = $tag->tagRefine($entries, $refine);
}


插件对象的重用

默认的DokuWiki重新使用它的插件实例。这可以通过在plugin类中添加一个isSingleton()函数来防止。 见 实例化.

例如,Sqlite助手为每个调用保留单独的实例。所以你可以有更多的数据库实例:

if(!plugin_isdisabled('sqlite')) {
    $DBIa = plugin_load('helper', 'sqlite');
    if($DBIa) {
        $DBIa->init('testa',dirname(__FILE__).'/db/');
    }
 
    $DBIb = plugin_load('helper', 'sqlite');
    ...
}



如何编写一个辅助插件

一个辅助插件 example 需要:

  • 类名 helper_plugin_example
  • 是存储在一个文件 lib/plugins/example/helper.php.

此外,一个plugin.info.txt文件是必要的。关于插件及其文件的详细信息,以及如何创建更多的帮助组件,请参考插件文件结构

所需的函数

  • getMethods() 返回所支持的方法的信息
  • <helper methods>() 你的公共辅助方法,通过 getMethods() 列出
  • _<private methods() (可选的)当您需要私有方法时,请在名称前面加上下划线。

继承的函数

  • 请参阅常见的插件功能,用于所有插件的继承函数。例如:本地化、配置和自省。


getMethods()

辅助插件还应该返回所支持的方法的信息。getMethods()应该返回一组方法,每个方法都有一个方法名、描述、参数和返回值的数组。参数和返回值是带有参数描述的数组,描述作为键和PHP对象类型为值。

例子:

public function getMethods() {
    $result = array();
    $result[] = array(
        'name' => 'getThreads',
        'desc' => 'returns pages with discussion sections, sorted by recent comments',
        'params' => array(
            'namespace' => 'string',
            'number (optional)' => 'integer'
        ),
        'return' => array('pages' => 'array'),
    );
    // 和更多的支持方法...
    return $result;
}


辅助方法

这项工作是根据getMethods()中列出的方法来完成的。当然,帮助插件类可以包含更多的私有方法。最好的做法是使用私有方法的名称以下划线开头。也不应该在getMethods()中列出。



常见的插件功能

一些函数在插件之间共享,参考下一节的信息:



进一步的阅读

1)
定义于 inc/plugin.php
zh/devel/helper_plugins.txt · 最后更改: 2017-07-19 21:03 由 223.74.133.140