xmlrpc_set_type

(PHP 4 >= 4.1.0, PHP 5, PHP 7)

xmlrpc_set_type为 PHP 字符串值设置 xmlrpc 类型,base64 或 datetime

说明

xmlrpc_set_type(string &$value, string $type): bool

为 PHP 字符串值设置 xmlrpc 类型,base64 或 datetime。

警告

此函数是实验性的。此函数的表象,包括名称及其相关文档都可能在未来的 PHP 发布版本中未通知就被修改。使用本函数风险自担。

参数

value

设置类型的值

type

'base64' 或 'datetime'

返回值

成功时返回 true, 或者在失败时返回 false。 如果成功,value 将转换为对象。

错误/异常

使用 XMLRPC 不支持的类型会发出 E_WARNING。

示例

示例 #1 xmlrpc_set_type() 示例

<?php

$params
= date("Ymd\TH:i:s", time());
xmlrpc_set_type($params, 'datetime');
echo
xmlrpc_encode($params);

?>

以上示例的输出类似于:

<?xml version="1.0" encoding="utf-8"?>
<params>
<param>
 <value>
  <dateTime.iso8601>20090322T23:43:03</dateTime.iso8601>
 </value>
</param>
</params>

添加备注

用户贡献的备注 3 notes

up
3
shem((at))etkDOTca [aka.Przemyslaw Szot]
20 years ago
Once you use the xmlrpc_set_type function, the data is encoded into a PHP object.  In your XMLRPC server, in order to access the data you must be able to access the necessary part of the object.So.. to expend on the example above:<---------- CLIENT ---------->$string = "My logging event."; $date = "20030115T12:22:37"; // Must be this format $binary = fread($fp, 128); xmlrpc_set_type(&$date, "datetime"); xmlrpc_set_type(&$binary, "base64"); $xmlrpcReq = xmlrpc_encode_request("log.data", array($string, $date, $binary)); In order to retrieve the binary file data you would need to get the scalar portion of the object:<---------- SERVER ------------>$string=$params[0];$date_obj=$params[1];$binary_obj=$params[2];$date=$date_obj->scalar;$binary_data=$binary_obj->scalar;// Then you can proceed to write the binaryfwrite($handle,$binary_data);
up
0
bmatheny at mobocracy dot net
19 years ago
The following code segfaults some older (pre 5.1.2) versions of PHP:$foo = date('c', time());xmlrpc_set_type($foo, 'datetime');Please upgrade before reporting as a bug.
up
0
kelly at seankelly dot biz
22 years ago
The problem is that PHP has a string type which is also used to hold binary data and dates.  But XML-RPC defines three separate types for strings, binary data, and dates.  How do you tell how you want strings encoded?  That's where this function comes in.

Suppose the XML-RPC method "log.data" took a string, a date, and a binary object.  To tell XML-RPC that the date (which is a PHP string) is a really a date and that the binary data (which is also a PHP string) is really binary data, try:

$string = "My logging event.";
$date = "20030115T12:22:37"; // Must be this format
$binary = fread($fp, 128);
xmlrpc_set_type(&$date, "datetime");
xmlrpc_set_type(&$binary, "base64");
$xmlrpcReq = xmlrpc_encode_request("log.data", array($string, $date, $binary));

Note the reference passing in the calls to xmlrpc_set_type; that enables the function to change the values from strings into what xmlrpc_encode/_request expects (which are objects that include a bonus field that tells the desired XML-RPC type).
To Top