手动:挂钩

来自MyaWiki.Org
跳转到导航 跳到搜索

OOJS UI图标 扩展 发展 ·标记扩展 ·解析器函数 ·挂钩 ·专版 · ·魔法词 ·应用程序接口 ·内容模型
MeimaWiKi扩展

当某些定义的事件(例如保存页面或用户登录)发生时,钩子允许执行自定义代码。例如,下面的代码片段将触发对函数的调用MyExtExoSooks::PrPcEngutsSaveCopter每当页面实体保存钩子运行,传递特定的函数参数页面实体保存.

钩子可以通过将钩子的名称映射到扩展名中的回调来注册。扩展子文件

“钩子” {
    “PageContentSaveComplete” “MyExeltuoHooks::OnPaGeCurraveSaveExpple”
}

MiTaWiKi提供了许多挂钩像这样扩展MIDAWIKI软件的功能. 赋值函数(称为函数)事件处理程序钩子将导致该函数在主MeaWiKi代码的适当点调用,以执行开发人员认为在那个点上有用的附加任务。每个钩子可以有多个分配给它的处理程序,在这种情况下,它将按分配给它们的顺序调用函数,并通过传递给链中的后续函数的一个函数进行任何修改。

在钩子上分配函数结束属于本地设置 或者在文件范围内的扩展文件中(在一个$WGExtExchange函数函数或帕塞尔弗斯特拉卡尼特钩子)。对于扩展,如果钩子函数的行为在LocalSettings.php中设置,则应该指定钩子,如果条件不满足,函数应该提前终止。

还可以在自己的扩展中创建新钩子;如果这样做,则将它们添加到扩展钩子注册表.

背景[编辑]

钩子是通过调用函数钩子::运行(在文件中描述)触发的。短裤并定义在全局功能. 钩子的第一个参数是:Run是钩子的名字,第二个是钩子的参数数组。它将发现在数组中运行的事件处理程序。美元挂钩. 它调用PHP函数Caluth-UsSeri-函数数组参数是被调用的函数及其参数。

也见内核钩子规范.

在这个例子中DOEDIT内容功能在WikIPaG.PHPDOEDIDENTY调用钩子::运行运行页面实体保存吊钩,通行证胡卡格斯作为论证:

挂钩::运行 “PACECONCONTION SAVE” 胡卡格斯 

这个核心 打很多钩,但扩展 也可以打钩。

编写事件处理程序[编辑]

事件处理程序是分配给钩子的函数,每当钩子所代表的事件发生时,它将运行。它包括:

  • 具有一些可选伴随数据的函数,或
  • 一个具有方法和可选的伴随数据的对象。

通过将事件处理程序添加到全局程序中来注册该事件处理程序美元挂钩钩子可以在钩子被调用之前从执行中的任何点添加,但最常用的是本地设置其包含的文件,或扩展名,在文件扩展名中。JSON.*以下是为事件定义钩子函数的有效方法事件名称通过两个参数,显示将在何时执行的代码。事件名称发生:

格式 句法 结果函数调用。
静态函数 $WG挂钩([事件名称] ][]= MyExeltuoSoks::OnEngNoTr'; MyExuthHooks::OnEngEnter($PARAM1,$PARAM2);
函数,无数据 $WGHOKS [事件名称][] =“某个函数”; 一些函数($PARAM1,$PARAM2);
数据函数 $WG挂钩([事件名称] ][] = [某个函数],$SOMODATA ]; 某些功能($SOMODATA,$PARAM1,$PARAM2);
函数,无数据
(奇怪的语法,但还好)
$WG挂钩([事件名称] ][] = [某些函数]; 一些函数($PARAM1,$PARAM2);
内联匿名函数
美元挂钩[“事件名称”[] = 功能 PARAM1 PARAM2  {
//功能体
}
(匿名函数用钩子的参数调用)
仅对象 $WG挂钩([事件名称] ][$=对象; $Objy-OnEngEnter($PARAM1,$PARAM2);
对象与方法 $WG挂钩([事件名称] ][] = [ $对象,'MuleMeod ' ]; $Obj->SOM方法($PARAM1,$PARAM2);
对象与方法和数据 $WG挂钩([事件名称] ][] = [ $对象,'MuleMeod ',$SOMODATA ]; $Obj->SOM方法($SOMDEATA,$PARAM1,$PARAM2);
仅对象
(奇怪的语法,但还好)
$WG挂钩([事件名称] ][] = [$Obj]; $Objy-OnEngEnter($PARAM1,$PARAM2);

对于扩展,文件中的语法类似。扩展子 (对应于上述第一和第二情况):

{
	“钩子” {
		“事件名称” [
			“MyExelExoSoks::OnEngNoDeNT”
			“某种功能”
		]
	}
}

当一个事件发生时,您注册的函数(或对象方法)将被调用,事件的参数,以及在注册时提供的任何可选数据。注意,当对象是钩子并且没有指定方法时,该方法称为“on”。事件名称对于其他事件,这将是“OnTeNeSave'”、“OnUnServer登录”等。

如果您想使用相同的函数或对象以达到不同的目的,则可选数据是有用的。例如:

美元挂钩[“PACECONCONTION SAVE”[] = [ “IrcNOTER” 蒂姆斯塔林 
美元挂钩[“PACECONCONTION SAVE”[] = [ “IrcNOTER” “布里翁” 

此代码将导致IcNebug在保存页面时运行两次:一次用于“TimStLILN”,一次用于“布里翁”。

事件处理程序可以返回三种可能的值之一:

  • 没有返回值(或NULL):钩子处理程序已成功运行。(在MediaWiKi 1.23之前,需要返回true)。
  • “一些字符串”:发生错误;处理应该停止,错误应该显示给用户。
  • 错误:钩子处理程序已经完成了所有必要的工作,或者替换了正常的处理。这将阻止进一步的处理程序运行,并且在某些情况下告诉调用函数跳过正常的处理。
在许多错误消息被预期的情况下,钩子将定义一个变量作为扩展来存储错误消息的引用,这比返回一个简单地显示为“内部错误”的字符串更为可取。

返回假对事件完成的事件的意义不大,并且通常会被调用方忽略。

MeaWiki 1.22 VS之前的钩子行为[编辑]

从中提取:变化500542对于不可中止的钩子(大多数钩子)返回自从MeIaWiKi 1.22(2015)以来,这是多余的。这是为了减少意外故障的机会,因为我们经历了几次中断和中断的特性,由于静默失败,例如一个钩子回叫某处意外地返回非布尔或假而不是真/空,从而短路整个系统。

(返回MealWiki钩子中的非真/非空)相当于防止违约E.速生繁殖在JavaScript事件中,它杀死同一事件的其他侦听器。

例如,如果在屏幕上显示钩子回来了在MobileFrontend,这意味着弹出窗口停止,因为它的回调不再运行。在屏幕上显示.

在MyaWiKi 1.22之前

公共 静止的 功能 在屏幕上显示 输出页面 美元 护肤 $皮肤  {
    /某些代码
    退货  / /显式
}

公共 静止的 功能 在屏幕上显示 输出页面 美元 护肤 $皮肤  {
    /某些代码
    退货 / /显式
}

MiaWiki 1.22 +

公共 静止的 功能 在屏幕上显示 输出页面 美元 护肤 $皮肤  {
    /某些代码
    /不需要返回真或返回
}


文档[编辑]

目前,MyaWiKi核心中的钩子必须在两个文件中进行记录。文件/文件(在源代码存储库中)和MIDAWIKI.ORG。在某些情况下,这些步骤中的一个可能尚未完成,因此,如果钩子出现无文件,请检查两者。

要在wiki上记录钩子,请使用{{中维基钩子}。

可用钩[编辑]

有关钩子的完整列表,请使用多类别 应该保持最新。

也见[编辑]