X-Git-Url: http://git.dj3c1t.com/?a=blobdiff_plain;f=mw%2Flibs%2Fempty_class.php;h=32894ced7dedc464e297ab80463726c098ca0dd7;hb=e1b64e4088232b9d7b4acb2dc24279bb38fcafba;hp=30814be61752fdd777d55ded10b60181d0e1a202;hpb=36ed114046cbe3d72a3589230e9f306a54fcc79d;p=mtweb diff --git a/mw/libs/empty_class.php b/mw/libs/empty_class.php index 30814be..32894ce 100644 --- a/mw/libs/empty_class.php +++ b/mw/libs/empty_class.php @@ -93,19 +93,31 @@ function empty_class_call($inst, $method_name, $arguments){ $r = false; - $args = ""; - foreach($arguments as $i => $arg) $args .= ($args ? ", " : "")."\$arguments[".$i."]"; - if(isset($inst->modules)) foreach($inst->modules as $module_name => $module){ - if(method_exists($module, $method_name)){ - eval("\$r = \$module->".$method_name."(".$args.");"); + if(($module = $this->get_module_for_method($inst, $method_name)) !== false){ + $args = ""; foreach($arguments as $i => $arg) $args .= ($args ? ", " : "")."\$arguments[".$i."]"; + eval("\$r = \$module->".$method_name."(".$args.");"); + } + else $r = $this->call_default($inst, $method_name, $arguments); + return $r; + } + + function get_module_for_method($inst, $method_name){ + $module = false; + if(isset($inst->modules)) foreach($inst->modules as $module_name => $module_impl){ + if(method_exists($module_impl, $method_name)){ + $module = $module_impl; break; } else{ - $r = $this->empty_class_call($module, $method_name, $arguments); - if($r !== false) break; + $module = $this->get_module_for_method($module_impl, $method_name); + if($module !== false) break; } } - return $r; + return $module; + } + + function call_default($inst, $method_name, $arguments){ + return false; } }