Here is a little wrapper class I just developed. It simply calls the methods you register with it.
<?php
class XMLRPCServer {
private $serverHandler;
private $externalFunctions;
public function __construct() {
$this->serverHandler = xmlrpc_server_create();
$this->externalFunctions = array();
}
public function registerMethod($externalName, $function, $parameterNames) {
if($function == null) $function = $externalName;
xmlrpc_server_register_method($this->serverHandler, $externalName, array(&$this, 'callMethod'));
$this->externalFunctions[$externalName] =
array('function' => $function,
'parameterNames' => $parameterNames);
}
public function callMethod($functionName, $parametersFromRequest) {
$function = $this->externalFunctions[$functionName]['function'];
$parameterNames = $this->externalFunctions[$functionName]['parameterNames'];
$parameters = array();
foreach($parameterNames as $parameterName) {
$parameters[] = $parametersFromRequest[0][$parameterName];
}
return call_user_func_array($function, $parameters);
}
public function computeAnswer() {
return xmlrpc_server_call_method($this->serverHandler, file_get_contents('php://input'), null);
}
}
// USAGE EXAMPLE HERE
$xmlRPCServer = new XMLRPCServer();
$someServer = new SomeXmlRPCServer($xmlRPCServer);
$answer = $xmlRPCServer->computeAnswer();
header('Content-Type: text/xml');
print($answer);
class SomeXmlRPCServer{
private $xmlRPCServer;
public function __construct($xmlRPCServer) {
$this->xmlRPCServer = $xmlRPCServer;
$this->xmlRPCServer->registerMethod(
'selectDatabase', // The name the XML-RPC Client calls
array(&$this, 'selectDatabaseInternal'), // Pointer to the method, can be a simple string if you have global functions
array('dbName', 'something') // Name of the parameters and their ordering
);
}
public function selectDatabaseInternal($dbName, $test) {
return 'dbName:.'.$dbName.'.test:'.$test;
}
}
?>
XML-RPC
- Giriş
- Yapılandırma/Kurulum
- Öntanımlı Sabitler
- XML-RPC İşlevleri
- xmlrpc_decode_request — XML'i doğal PHP türlerine dönüştürür
- xmlrpc_decode — XML'i doğal PHP türlerine dönüştürür
- xmlrpc_encode_request — Bir yöntem çağrısı için XML üretir
- xmlrpc_encode — Bir PHP değeri için XML üretir
- xmlrpc_get_type — Bir PHP değerinin xmlrpc türünü döndürür
- xmlrpc_is_fault — Bir dizinin bir XMLRPC hatasını gösterip göstermediğini tespit eder
- xmlrpc_parse_method_descriptions — XML'i bir yöntem açıklamaları listesine dönüştürür
- xmlrpc_server_add_introspection_data — Kendiliğinden üretilen belgeleme ekler
- xmlrpc_server_call_method — XML isteklerini ve yöntem çağrılarını çözümler
- xmlrpc_server_create — Bir xmlrpc sunucusu oluşturur
- xmlrpc_server_destroy — Sunucuya ayrılan özkaynakları serbest bırakır
- xmlrpc_server_register_introspection_callback — Belge üretimi için bir PHP işlevi atar
- xmlrpc_server_register_method — Belirtilen yöntemle eşleşen özkaynak için bir PHP işlevi atar
- xmlrpc_set_type — Bir PHP dizge değeri için xmlrpc türünü base64 veya datetime türüne dönüştürür
aim at secoya dot dk
15-Sep-2009 08:08
