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 条笔记

3
shem((at))etkDOTca [aka.Przemyslaw Szot]
19 年前
使用 xmlrpc_set_type 函数后,数据将被编码为 PHP 对象。 在您的 XMLRPC 服务器中,为了访问数据,您必须能够访问对象的必要部分。

所以.. 扩展上面的例子

<---------- 客户端 ---------->
$string = "我的日志记录事件。";
$date = "20030115T12:22:37"; // 必须是这种格式
$binary = fread($fp, 128);
xmlrpc_set_type(&$date, "datetime");
xmlrpc_set_type(&$binary, "base64");
$xmlrpcReq = xmlrpc_encode_request("log.data", array($string, $date, $binary));

要检索二进制文件数据,您需要获取对象的标量部分

<---------- 服务器 ------------>
$string=$params[0];
$date_obj=$params[1];
$binary_obj=$params[2];

$date=$date_obj->scalar;
$binary_data=$binary_obj->scalar;

// 然后您可以继续写入二进制文件
fwrite($handle,$binary_data);
1
kelly at seankelly dot biz
21 年前
问题是 PHP 具有字符串类型,也用于保存二进制数据和日期。 但 XML-RPC 为字符串、二进制数据和日期定义了三种不同的类型。 您如何确定您希望如何编码字符串? 这就是此函数的作用所在。

假设 XML-RPC 方法“log.data”接受一个字符串、一个日期和一个二进制对象。 要告诉 XML-RPC 日期(它是 PHP 字符串)实际上是一个日期,而二进制数据(它也是 PHP 字符串)实际上是二进制数据,请尝试

$string = "我的日志记录事件。";
$date = "20030115T12:22:37"; // 必须是这种格式
$binary = fread($fp, 128);
xmlrpc_set_type(&$date, "datetime");
xmlrpc_set_type(&$binary, "base64");
$xmlrpcReq = xmlrpc_encode_request("log.data", array($string, $date, $binary));

请注意对 xmlrpc_set_type 的调用中的引用传递; 这使函数能够将值从字符串更改为 xmlrpc_encode/_request 期望的内容(它们是包含一个额外字段的对象,该字段指示所需的 XML-RPC 类型)。
-2
bmatheny at mobocracy dot net
18 年前
以下代码导致某些旧版(早于 5.1.2)的 PHP 出现段错误

$foo = date('c', time());
xmlrpc_set_type($foo, 'datetime');

请升级后才能报告为错误。
To Top