/** * Aufruf einer Funtion (Class-Member oder statische Funktion) * * @param $function Name der Callback-Funktion * @param $params Parameter für die Funktion * * @example * rex_call_func( 'myFunction', array( 'Param1' => 'ab', 'Param2' => 12)) * @example * rex_call_func( 'myObject::myMethod', array( 'Param1' => 'ab', 'Param2' => 12)) * @example * rex_call_func( array('myObject', 'myMethod'), array( 'Param1' => 'ab', 'Param2' => 12)) * @example * $myObject = new myObject(); * rex_call_func( array($myObject, 'myMethod'), array( 'Param1' => 'ab', 'Param2' => 12)) */ function rex_call_func($function, $params, $parseParamsAsArray = true) { $func = ''; if (is_string($function) && strlen($function) > 0) { // static class method if (strpos($function, '::') !== false) { preg_match('!(\\w+)::(\\w+)!', $function, $_match = array()); $_class_name = $_match[1]; $_method_name = $_match[2]; rex_check_callable($func = array($_class_name, $_method_name)); } elseif (function_exists($function)) { $func = $function; } else { trigger_error('rexCallFunc: Function "' . $function . '" not found!', E_USER_ERROR); } } elseif (is_array($function)) { $_object = $function[0]; $_method_name = $function[1]; rex_check_callable($func = array($_object, $_method_name)); } else { trigger_error('rexCallFunc: Using of an unexpected function var "' . $function . '"!'); } if ($parseParamsAsArray === true) { // Alle Parameter als ein Array übergeben // funktion($params); return call_user_func($func, $params); } // Jeder index im Array ist ein Parameter // funktion($params[0], $params[1], $params[2],...); return call_user_func_array($func, $params); }
/** * Aufruf einer Funtion (Class-Member oder statische Funktion) * * @param $function Name der Callback-Funktion * @param $params Parameter für die Funktion * * @example * rex_call_func( 'myFunction', array( 'Param1' => 'ab', 'Param2' => 12)) * @example * rex_call_func( 'myObject::myMethod', array( 'Param1' => 'ab', 'Param2' => 12)) * @example * rex_call_func( array('myObject', 'myMethod'), array( 'Param1' => 'ab', 'Param2' => 12)) * @example * $myObject = new myObject(); * rex_call_func( array($myObject, 'myMethod'), array( 'Param1' => 'ab', 'Param2' => 12)) */ function rex_call_func($function, $params) { $func = ''; if (is_string($function) && strlen($function) > 0) { // static class method if (strpos($function, '::') !== false) { preg_match('!(\\w+)::(\\w+)!', $function, $_match = array()); $_class_name = $_match[1]; $_method_name = $_match[2]; rex_check_callable($func = array($_class_name, $_method_name)); } elseif (function_exists($function)) { $func = $function; } else { trigger_error('rexExtension: Function "' . $function . '" not found!'); } } elseif (is_array($function)) { $_object = $function[0]; $_method_name = $function[1]; rex_check_callable($func = array($_object, $_method_name)); } else { trigger_error('rexExtension: Using of an unexpected function var "' . $function . '"!'); } return call_user_func($func, $params); }