以下是一个例子:
https://phabricator.wikimedia.org/diffusion/EPFM/browse/master/?grep=BeforeFreeTextSubst
一个Mediawiki扩展,其中Hooks :: run(' PageForms :: BeforeFreeTextSubst',...)被调用,但没有其他记录或跟踪它定义的位置。如果有一些字符串/名称映射到函数,它将在其他地方注册,如果它是一个函数名称,它应该显示在其他地方。
我通过其他一些函数挂钩事件看到了这一点。
答案 0 :(得分:2)
除了运行钩子之外,没有任何“源定义”。这是定义钩子的地方;它可能会或可能不会实际挂在到的任何地方。所有钩子定义都是一个名称和一组传递给钩子回调的参数。
为了帮助找出实际使用钩子的位置,您可以使用(新)代码搜索工具:
https://codesearch.wmflabs.org/extensions/?q=BeforeFreeTextSubst
(看起来这个维基媒体源控件中的任何扩展都没有使用它。)
答案 1 :(得分:2)
您是否在尝试查找挂钩运行时调用的函数?那里的情况有点混乱。有两种定义钩子的机制:
$wgHooks
全局(这是注册挂钩的常规方式); Hooks::register
方法(有时用于动态注册挂钩)。 $wgHooks
通常通过extension.json
文件设置,但也可以动态设置。
找出注册了哪些挂钩的最快方法是运行maintenance/shell.php
并输入$wgHooks
。这将错过通过其他方法注册的钩子,以及有条件注册的钩子(例如仅用于API调用),但它仍然可以在99%的时间内工作。否则,你将不得不为此而努力,正如Sam所说。