call_array(func_get_args()); } /** * Call callback (with args in array). * * @param $args array Contains the arguments to be passed to the callback. * @return mixed The return value of the callback. * @see call_user_func_array. * @access public */ function call_array($args) { trigger_error('pure virtual', E_USER_ERROR); } /** * Convert to Pear callback. * * @return string The name of the callback function. * (This value is suitable for passing as the callback parameter * to a number of different Pear functions and methods.) * @access public */ function toPearCb() { trigger_error('pure virtual', E_USER_ERROR); } } /** * Global function callback. */ class WikiFunctionCb extends WikiCallback { /** * Constructor * * @param $functionName string Name of global function to call. * @access public */ function WikiFunctionCb($functionName) { $this->functionName = $functionName; } function call_array($args) { return call_user_func_array($this->functionName, $args); } function toPearCb() { return $this->functionName; } } /** * Object Method Callback. */ class WikiMethodCb extends WikiCallback { /** * Constructor * * @param $object object Object on which to invoke method. * @param $methodName string Name of method to call. * @access public */ function WikiMethodCb(&$object, $methodName) { $this->object = &$object; $this->methodName = $methodName; } function call_array($args) { $method = &$this->methodName; return call_user_func_array(array(&$this->object, $method), $args); } function toPearCb() { return array($this->object, $this->methodName); } } /** * Anonymous function callback. */ class WikiAnonymousCb extends WikiCallback { /** * Constructor * * @param $args string Argument declarations * @param $code string Function body * @see create_function(). * @access public */ function WikiAnonymousCb($args, $code) { $this->function = create_function($args, $code); } function call_array($args) { return call_user_func_array($this->function, $args); } function toPearCb() { trigger_error("Can't convert WikiAnonymousCb to Pear callback", E_USER_ERROR); } } // Local Variables: // mode: php // tab-width: 8 // c-basic-offset: 4 // c-hanging-comment-ender-p: nil // indent-tabs-mode: nil // End: