1

我正在开发一个插件,它有自己的插件来处理各种事件。

现在我正在考虑启用这个插件来添加他们自己的“命令”。但我想知道如何最有效地治疗它。我有一个我自己的命令列表,无论如何我都会在文章中搜索。然后我应该只触发一个DoWhatYouWant($article)-event - 或者,因为我无论如何都要进行搜索(和解析参数),也许我可以构建一个全局命令列表然后触发一个“ ExecuteCommand($article,$cmd,$params)”-事件?听起来更好,但是(我认为)我必须构建这个命令列表(以便我的程序知道要查找什么),所以每个插件都必须以某种方式“宣传”它可以做什么,即它可以处理的命令 - 我不知道如何做到这一点。

还是有更好(更标准化?)的方法?

4

1 回答 1

2

如果您通过插件助手导入插件

JPluginHelper::importPlugin('mycmdplugins');

然后您可以获得子插件支持的所有可用命令,例如

$cmds = JDispatcher::getInstance()->trigger('onMyAwesomeCmds');

使用 $cmds 变量,您现在知道子插件支持哪些命令,并且您可以为它们解析文章。然后你可以做

foreach ($cmds as $cmd) {
  preg_match_all("{".$cmd."*}", $article->text, $matches, PREG_SET_ORDER);
  if (!empty($matches)) {
    JDispatcher::getInstance()->trigger('onMyAwesome'.ucfirst($cmd), array($article, $params));
  }
}

为了消除更多重复的任务,我建议附加插件将从您的插件文件夹中扩展一个基类。

于 2013-08-05T11:42:12.440 回答