xmlrpc_server_add_introspection_data

xmlrpc introspection で使用されるドキュメントを PHP 配列形式で追加する。

説明

int xmlrpc_server_add_introspection_data(resource $server, array $desc)

パラメータ

server
xmlrpc サーバを指し示す PHP リソース型。
desc
イントロスペクション情報を格納した配列。 配列の形式は http://xmlrpc-epi.sourceforge.net/specs/rfc.system.describeMethods.php で記載されている通りの形式で指定する必要があります。 xmlrpc_parse_method_descriptions を使って introspection XML から 生成することもできます。

返り値

イントロスペクション情報がサーバに追加登録された場合 1 、失敗時 0 。

<?php
# php://input で HTTP POST で渡さる XML ドキュメントを取り込みます。
$xml = file_get_contents('php://input');

# xmlrpc サーバに登録する callback 関数は 3 つの引数を取ります。
function sample_noop($methodName, $args, $user_data){
}
function sample_trim($methodName, $args, $user_data){
  return trim($args[0]);
}

# イントロスペクション情報を PHP 配列の形式で記述します。
$sample_description = array(
  'methodList' => array(
    array(
      'name' => 'sample.noop',
      'author' => 'Hiroaki Kawai',
      'purpose' => 'no-operation server that might be useful for debugging.',
      'version' => '0.1',
      'signatures' => array(
      )
    ),
    array(
      'name' => 'sample.trim',
      'author' => 'Hiroaki Kawai',
      'purpose' => 'trims input string.',
      'version' => '0.1',
      'signatures' => array(
        '' => array(
          'params' => array(
            '' => array(
              'type' => 'array',
              'optional' => 0,
              'name' => 'inputString',
              'description' => 'trim inputString.',
              'member' => array(
                array(
                  'optional' => 0,
                  'type' => 'string',
                  'description' => 'valid string sequence'
                )
              )
            )
          ),
          'returns' => array(
            '' => array(
              'optional' => 0,
              'type' => 'string',
              'description' => 'trimmed string result'
            )
          )
        )
      )
    ),
  )
);
$server = xmlrpc_server_create();
xmlrpc_server_register_method($server, 'sample.noop', 'sample_noop');
xmlrpc_server_register_method($server, 'sample.trim', 'sample_trim');
xmlrpc_server_add_introspection_data($server, $sample_description);
$response = xmlrpc_server_call_method($server, $xml, null, array('escaping'=>'markup','encoding'=>'UTF-8'));
echo $response;
xmlrpc_server_destroy($server);
?>

xmlrpc_server_register_introspection_callback を使うと、 XML ドキュメントの形式から直接イントロスペクション情報が定義できます。


    Front page List of pages Search Recent changes Backup Referer   Help   RSS of recent changes

© 2006-2008 Internet Revolution