aboutsummaryrefslogtreecommitdiff
path: root/lib/Minz/ExtensionManager.php
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2022-01-01 13:54:36 +0100
committerGravatar GitHub <noreply@github.com> 2022-01-01 13:54:36 +0100
commita791388ce4b7b5c03be109418336d41992d93b88 (patch)
treee4d0b697887203c1cbd2f19345f52c711354c299 /lib/Minz/ExtensionManager.php
parent3f6aa42b817145a3b00f4d615f87728b55c4413a (diff)
Avoid func_get_args (#4108)
Use variadic syntax instead https://php.net/manual/functions.arguments#functions.variable-arg-list And avoid dynamic functions names when possible to more easily identify calls and unused functions. Contributes to https://github.com/FreshRSS/FreshRSS/issues/4103
Diffstat (limited to 'lib/Minz/ExtensionManager.php')
-rw-r--r--lib/Minz/ExtensionManager.php18
1 files changed, 10 insertions, 8 deletions
diff --git a/lib/Minz/ExtensionManager.php b/lib/Minz/ExtensionManager.php
index 0139c326f..576064b35 100644
--- a/lib/Minz/ExtensionManager.php
+++ b/lib/Minz/ExtensionManager.php
@@ -295,23 +295,25 @@ class Minz_ExtensionManager {
* array keys.
*
* @param string $hook_name the hook to call.
- * @param additional parameters (for signature, please see self::$hook_list).
+ * @param array<mixed> $args additional parameters (for signature, please see self::$hook_list).
* @return mixed final result of the called hook.
*/
- public static function callHook($hook_name) {
+ public static function callHook($hook_name, ...$args) {
if (!isset(self::$hook_list[$hook_name])) {
return;
}
$signature = self::$hook_list[$hook_name]['signature'];
- $args = func_get_args();
- if ($signature === 'PassArguments') {
- array_shift($args);
+ if ($signature === 'OneToOne') {
+ return self::callOneToOne($hook_name, $args[0] ?? null);
+ } elseif ($signature === 'PassArguments') {
foreach (self::$hook_list[$hook_name]['list'] as $function) {
- call_user_func_array($function, $args);
+ call_user_func($function, ...$args);
}
- } else {
- return call_user_func_array('self::call' . $signature, $args);
+ } elseif ($signature === 'NoneToString') {
+ return self::callNoneToString($hook_name);
+ } elseif ($signature === 'NoneToNone') {
+ return self::callNoneToNone($hook_name);
}
}