php[world] 2018 - Call for Speakers


(PHP 4 >= 4.1.0, PHP 5, PHP 7)

xmlrpc_server_register_methodRegistra una funzione PHP per il metodo di risorsa abbinato a method_name


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

Questa funzione è SPERIMENTALE. Ovvero, il comportamento di questa funzione, il nome di questa funzione, in definitiva tutto ciò che è documentato qui può cambiare nei futuri rilasci del PHP senza preavviso. Siete avvisati, l'uso di questa funzione è a vostro rischio.


Questa funzione, al momento non è documentata; è disponibile soltanto la lista degli argomenti.

add a note add a note

User Contributed Notes 6 notes

15 years ago
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...

nyvsld at gmail dot com
12 years ago
prototype of registered function:

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

    the public method name, known by calling client
    parameters specified by calling client
    any local data, passed by `xmlrpc_server_call_method'
eiriks at hollowmatrix dot com
13 years ago
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

// 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;
        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);
giunta dot gaetano at sea-aeroportimilano dot it
11 years ago
To have an xmlrpc fault response programatically generated by the server, the php function registered as method handler must return an array containing a FaultCode and a FaultString members.

function $myfunc($methodname, $vals, $extra_data)
return array('faultCode' => 666, 'faultString' => 'DOH!');
dante at lorenso dot com
12 years ago
To register a callback to a 'static' function within the same class, consider a syntax like the following:
$callback = array (__CLASS__, "my_function_name");
xmlrpc_server_register_method($xmlrpc_server, "my_function", $callback);
Doing it this way makes it easier to rename your class later.
Nate Parsons
15 years ago
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. =)
To Top