例 -- XML_RPC パッケージの利用例

クライアント - サーバ の組み合わせ

例 63-2

これがサーバ側のスクリプトです。localhost の web サーバの ドキュメントルートに、xmlrpc.php という名前で設置します。

require_once 'XML/RPC/Server.php';  function returnTimes2($params) {     $obj = new some_class_name;     return $obj->returnTimes2($params); }  class some_class_name {     function returnTimes2($params) {         $param = $params->getParam(0);          // このエラーチェック構文は、リリース 1.3.0 で追加されました         if (!XML_RPC_Value::isValue($param)) {             return $param;         }          $val = new XML_RPC_Value($param->scalarval() * 2, 'int');          return new XML_RPC_Response($val);     } }  $some_object = new some_class_name;   /*  * ディスパッチマップと XML_RPC サーバインターフェイスを確立します  */ $server = new XML_RPC_Server(     array(         'function_times2' => array(             'function' => 'returnTimes2'         ),         'class_paamayim_nekudotayim_times2' => array(             'function' => 'some_class_name::returnTimes2'         ),         'class_times2' => array(             'function' => array('some_class_name', 'returnTimes2')         ),         'object_times2' => array(             'function' => array($some_object, 'returnTimes2')         ),     ),     1  // serviceNow );

そしてこちらがクライアント側のスクリプトです。

require_once 'XML/RPC.php';  $input = 8; $params = array(new XML_RPC_Value($input, 'int')); $msg = new XML_RPC_Message('function_times2', $params);  $cli = new XML_RPC_Client('/xmlrpc.php', 'localhost'); // $cli->setDebug(1); $resp = $cli->send($msg);  if (!$resp) {     echo 'Communication error: ' . $cli->errstr;     exit; }  if (!$resp->faultCode()) {     $val = $resp->value();     echo $input . ' times 2 is ' . $val->scalarval(); } else {     /*      * xmlrpc.php スクリプトが遭遇した問題を      * 報告する      */     echo 'Fault Code: ' . $resp->faultCode() . "\n";     echo 'Fault Reason: ' . $resp->faultString() . "\n"; }