Hook
<br/>
>i 本文档的最新修订日期是:
> **2023-05-27**
# Hook ::
添加钩子或调用钩子。
# add()
## 说明
**<font color="#0099ff"><font color="#ff6600">Hook</font> :: <font color="#ff6600">add</font> ( <kbd>传参数组</kbd> )</font>**
添加(注册)一个钩子。
此方法 <font color="#c7254e">`支持`</font> 中文参数名。
此方法 <font color="#c7254e">`支持`</font> 参数简写。
## 参数
* **<font color="#ff6600">`list(列表)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`<必须>`</font> <font color="#19c58c">`可简写`</font>:
需要添加(注册)的钩子的列表。
数组为一个二维数组,第一维数组的键为钩子的名称,值为一个数组。在第二维数组中无需指定键名,值为需要执行的模块方法名称(无需添加 <font color="#c7254e">`plugin\`</font> 前缀)。第二维数组中元素的先后顺序即为模块方法执行的顺序。
## 返回
无。
## 示例
为钩子demohook添加两个模块方法。
```php
\core\Hook::add([
[
'demohook' => ['ClassA::func1','ClassB::func2']
]
]);
```
# call()
## 说明
**<font color="#0099ff"><font color="#ff6600">Hook</font> :: <font color="#ff6600">call</font> ( <kbd>传参数组</kbd> )</font>**
调用指定的钩子。
此方法 <font color="#c7254e">`支持`</font> 中文参数名。
此方法 <font color="#c7254e">`支持`</font> 参数简写。
## 参数
* **<font color="#ff6600">`name(名称)`</font>** <font color="#0099ff">`(String)`</font> <font color="#BBBBBB">`<必须>`</font> <font color="#19c58c">`可简写`</font>:
指定钩子的名称。
* **<font color="#ff6600">`parameter(参数)`</font>** <font color="#0099ff">`(Array)`</font> <font color="#BBBBBB">`[]`</font>:
可传入供钩子方法使用的参数。
参数的数据类型必须为 <font color="#c7254e">`Array`</font> ,如果需要为钩子执行的方法传递多个参数或变量,请先将这些参数或变量组合为一个数组,在方法中通过数组元素来访问这些参数或变量。
## 返回
<font color="#0099ff">`(Array)`</font> 类型。
如果钩子方法对传入的参数进行了修改,返回的是修改后的参数。
如果钩子方法没有对传入的参数进行修改,或钩子方法的返回值不是一个数组,则返回值与传入的参数一致。