xmlrpc_set_typePHP 文字列型のある値に対して、それが xmlrpc の特定の型に変換されるように指定する。 説明bool xmlrpc_set_type(string &$value, string $type) パラメータ
返り値成功時は TRUE、失敗時は FALSE が返されます。 例xmlrpc の datetime 型を使う場合、DateTime クラス <?php $a=date('c'); if(xmlrpc_set_type($a,'datetime')){ var_dump($a); var_dump(xmlrpc_encode($a)); } ?> 実行結果はこのようになります。xmlrpc_set_type で処理した変数はオブジェクトになっていることに注意してください。PHP 5.2.7 以降 datetime は Timezone つき、つまり timezone-aware で送信されるようになりました。それ以前のものでは Timezone がつかない、つまり timezone-naive であることに注意してください。 object(stdClass)#1 (3) { ["scalar"]=> string(25) "2009-01-13T12:31:17+09:00" ["xmlrpc_type"]=> string(8) "datetime" ["timestamp"]=> int(1231817477) } string(151) "<params> <param> <value> <dateTime.iso8601>2009-01-13T12:31:17+09:00</dateTime.iso8601> </value> </param> </params> " xmlrpc 通信の結果受け取った datetime 型の変数も同じメンバー変数を持っています。timestamp メンバー変数は現在の PHP 5.2.8 でも正しい値が得られないことが分かっていますので、scalar メンバー変数を strtotime base64 型に変換する場合の例は次のようなものです。 例中の $a は実際にはバイナリシーケンスで、文字列とは限りません。 <?php $a='test'; if(xmlrpc_set_type($a,'base64')){ var_dump(xmlrpc_encode($a)); } ?> 実行結果はこのようになります。 string(127) "<?xml version="1.0" encoding="utf-8"?> <params> <param> <value> <base64>dGVzdA== </base64> </value> </param> </params> " は「改行」です。MIME の Base64 の仕様では 76 文字で改行すること、 と仕様に記載されています。これに対応する改行です。 |
© 2006-2008 Internet Revolution