From: Jakub Vrana Date: Mon, 14 Feb 2011 11:08:36 +0000 (+0100) Subject: Improve work with references X-Git-Tag: v3.2.0~15 X-Git-Url: https://git.joonet.de/?a=commitdiff_plain;h=eb41053c61fe0b75e78432fe6c9b776fbba2ef22;p=adminer.git Improve work with references --- diff --git a/plugins/plugin.php b/plugins/plugin.php index 5e83cd81..914885ed 100644 --- a/plugins/plugin.php +++ b/plugins/plugin.php @@ -19,10 +19,14 @@ class AdminerPlugin extends Adminer { function _applyPlugin($function, $args) { foreach ($this->plugins as $plugin) { if (method_exists($plugin, $function)) { - foreach ($args as $key => $val) { - $args[$key] = &$args[$key]; // allows modification of parameters + switch (count($args)) { // call_user_func_array() doesn't work well with references + case 0: $return = $plugin->$function(); break; + case 1: $return = $plugin->$function($args[0]); break; + case 2: $return = $plugin->$function($args[0], $args[1]); break; + case 3: $return = $plugin->$function($args[0], $args[1], $args[2]); break; + case 4: $return = $plugin->$function($args[0], $args[1], $args[2], $args[3]); break; + default: trigger_error('Too many parameters.', E_USER_WARNING); } - $return = call_user_func_array(array($plugin, $function), $args); if (isset($return)) { return $return; }