xmlrpc_server_call_method() with class methods
<?php
require_once ('Connections/adodb_mysql_connection.php');
// Instantiating my own class
$my_report = new external_report($db_connection);
// Setting up the XML-RPC "server"
$xmlrpc_server_handler = xmlrpc_server_create();
xmlrpc_server_register_method($xmlrpc_server_handler, "external_method", array(&$my_report, "export"));
// Creating XML return data
if ($response = xmlrpc_server_call_method($xmlrpc_server_handler, $HTTP_RAW_POST_DATA, null))
{
header('Content-Type: text/xml');
echo $response;
}
// **************** class definition ****************
class external_report
{
protected $db_connection;
public function __construct($db_connection_pointer)
{
if (method_exists($db_connection_pointer, "Execute")) $this->db_connection = $db_connection_pointer;
else die("...");
}
public function export($method_name, $params_array)
{
$id_dir = (int)$params_array[0];
$id_usr = (int)$params_array[1]; // not used, just an example
// We have to add arguments' validating code here and NOT inside the constructor (as usual)
// because arguments are passed directly by xmlrpc_server_call_method (?!!)
$myexport = array();
$dirs_query = "SELECT documento_id FROM tabella_cartelle WHERE cartella_id = ".$id_dir;
$dirs_result = $this->db_connection->Execute($dirs_query) or die("...");
$index = 0;
while(!$dirs_result->EOF)
{
$docs_query = "SELECT codice, titolo FROM tabella_documenti WHERE id_documento = ".$dirs_result->Fields('documento_id');
$docs_result = $this->db_connection->Execute($docs_query) or die("...");
$myexport[$index]['codice'] = $docs_result->Fields('codice');
$myexport[$index]['titolo'] = $docs_result->Fields('titolo');
$index++;
$dirs_result->MoveNext();
}
return $myexport;
}
}
?>
PHP.mk документација
xmlrpc_server_call_method
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
Патека
function.xmlrpc-server-call-method.php
Локална патека за оваа страница.
Извор
php.net/manual/en
Оригиналниот HTML се реупотребува и локално се стилизира.
Режим
Прокси + превод во позадина
Кодовите, табелите и белешките остануваат читливи во истиот тек.
Референца
function.xmlrpc-server-call-method.php
xmlrpc_server_call_method
Референца за `function.xmlrpc-server-call-method.php` со подобрена типографија и навигација.
xmlrpc_server_call_method
(PHP 4 >= 4.1.0, PHP 5, PHP 7)
xmlrpc_server_call_method — Parses XML requests and call methods
= NULL
xmlrpc_server_call_method(
resource
string
mixed
array
): string
resource
$server,string
$xml,mixed
$user_data,array
$output_options = ?): string
Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава
Оваа функција е ЕКСПЕРИМЕНТАЛНАОднесувањето на оваа функција, нејзиното име и околната документација може да се променат без претходна најава во идно издание на PHP. Оваа функција треба да се користи на ваш сопствен ризик.
Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава
Оваа функција моментално не е документирана; достапна е само листата со аргументи.
Белешки од корисници 2 забелешки
Парсира XML барања и повикува методи ¶
19 години пред
nyvsld на gmail dot com ¶
20 години пред
<?php
/* method implementation */
function impl($method_name,$params,$user_data){
var_dump(func_get_args('impl'));
return array_sum($params);
}
/* create server */
$s=xmlrpc_server_create();
xmlrpc_server_register_method($s,'add','impl');
/* calling server method */
$req=xmlrpc_encode_request('add',array(1,2,3));
$resp=xmlrpc_server_call_method($s,$req,array(3,4));
/* process result */
$decoded=xmlrpc_decode($resp);
if(xmlrpc_is_fault($decoded)){
echo 'fault!';
}
var_dump($decoded);
?>