我正在开发一个插件,它将拥有自己的插件来处理各种事件。
现在我正在考虑启用此插件来添加自己的“命令”。但我想知道如何最有效地对待它。我有一个我自己的命令列表,无论如何我在文章中搜索。我是否应该只触发DoWhatYouWant($article)
- 事件 - 或者,因为我进行搜索(并解析params),或许我可以构建一个全局命令列表然后触发“ExecuteCommand($article,$cmd,$params)
” - 事件?听起来更好,但后来(我认为)我必须构建这个命令列表(以便我的程序知道要查找的内容),因此每个插件都必须以某种方式“宣传”它能做什么,即名称它可以处理的命令 - 我不知道如何做到这一点。
或者是否有更好的(更标准化的?)方法?
答案 0 :(得分: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));
}
}
为了消除更多重复的任务,我建议额外的插件将扩展插件文件夹中的基类。