xmlrpc_set_type

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

xmlrpc_set_typeDefine o tipo xmlrpc, base64 ou datetime, para um valor string PHP

Descrição

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

Define o tipo xmlrpc, base64 ou datetime, para um valor string PHP.

Aviso

Esta função é EXPERIMENTAL. O comportamento desta função, seu nome e documentação poderão mudar sem aviso prévio em futuras versões do PHP. Use por sua conta e risco.

Parâmetros

value

Valor para definir o tipo.

type

'base64' ou 'datetime'

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha. Em caso de sucesso, value é convertido para um objeto.

Erros/Exceções

Emite um E_WARNING caso o tipo não seja suportado pelo XMLRPC.

Exemplos

Exemplo #1 Um exemplo de xmlrpc_set_type()

<?php

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

?>

O exemplo acima produzirá algo semelhante a:

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

adicione uma nota

Notas Enviadas por Usuários (em inglês) 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