Improve work with references

This commit is contained in:
Jakub Vrana 2011-02-14 12:08:36 +01:00
parent e4deeb61ba
commit eb41053c61

View file

@ -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;
}