xmlrpc_server_register_method

(PHP 4 >= 4.1.0, PHP 5)

xmlrpc_server_register_method -- Register a PHP function to resource method matching method_name

Description

bool xmlrpc_server_register_method ( resource server, string method_name, string function )

Внимание

Эта функция является ЭКСПЕРИМЕНТАЛЬНОЙ. Поведение этой функции, ее имя и относящаяся к ней документация могут измениться в последующих версиях PHP без уведомления. Используйте эту функцию на свой страх и риск.

Внимание

К настоящему времени эта функция еще не была документирована; для ознакомления доступен только список аргументов.



xmlrpc_server_register_method
nyvsld at gmail dot com
27-Nov-2005 05:03
prototype of registered function:

function method_impl(string $method_name, array $params, array $user_data);

$method_name
   the public method name, known by calling client
$params
   parameters specified by calling client
$user_data
   any local data, passed by `xmlrpc_server_call_method'
dante at lorenso dot com
11-Aug-2005 12:46
To register a callback to a 'static' function within the same class, consider a syntax like the following:
<code>
$callback = array (__CLASS__, "my_function_name");
xmlrpc_server_register_method($xmlrpc_server, "my_function", $callback);
</code>
Doing it this way makes it easier to rename your class later.
eiriks at hollowmatrix dot com
28-Mar-2005 03:08
Remember that you can't do like Chrigu and Nate said if you want to add methods from a static class (Hence you can't create any instances of it).
A workaround is to create lambda functions calling the
methods:

// Our static handler class
static class MyHandler
{
   public function getPrice($item)
   {
       $prices = array("apple" => 4, "orange" => 5);
       return $prices[$item];
   }
   public function buy($item, $number)
   {
       $price = self::getPrice($item) * $number;
       do_thing_to_sell_the_item();
       return $price;
   }
}

// Use reflection to get method names and parameters
$mirror = new ReflectionClass("MyHandler");
foreach ($mirror->getMethods() as $method)
{
   // Create new "lambda" function for each method
  
   // Generate argument list
   $args = array();
   foreach ($method->getParameters() as $param)
   {
       $args[] = '$'.$param->getName();
   }
   $args = implode(',', $args);
  
   // Generate code
   $methodname = $method->getName();
   $code = "return {$real_class}::{$methodname}({$args});";
  
   // Create function, retrieve function name
   $function_name = create_function($args, $code);

   // Register the function
   xmlrpc_server_register_method($myserver, $methodname, $function_name);
}
Nate Parsons
29-Apr-2003 03:12
In case its not completely obvious what Chrigu meant,

You can register a method inside your class by doing the following:

xml_rpc_server_register_methode($xmlrpc_server, "myClientCall", array(&$this, "handleClientCallFunc"));

where $this == the magic class $this. =)
18-Nov-2002 10:40
Here is an example how to register a class methode:

xml_rpc_server_register_methode($xmlrpc_server, "foo", array(&$bar, "foo_func"));

where $bar is the instance of your class and foo_func a methode of this class. Don't forget the '&'!

hope this may be useful...

Chrigu

<xmlrpc_server_register_introspection_callbackxmlrpc_set_type>
 Last updated: Tue, 15 Nov 2005