|
 |
xmlrpc_encode (PHP 4 >= 4.1.0, PHP 5) xmlrpc_encode -- Generates XML for a PHP value Descriptionstring xmlrpc_encode ( mixed value ) Внимание |
Эта функция является ЭКСПЕРИМЕНТАЛЬНОЙ.
Поведение этой функции, ее имя и относящаяся к ней документация
могут измениться в последующих версиях PHP без уведомления.
Используйте эту функцию на свой страх и риск. |
Внимание | К настоящему
времени эта функция еще не была документирована; для ознакомления
доступен только список аргументов. |
xmlrpc_encode
08-Jun-2006 07:32
Another quirk (more of a bug i think) is the automatic encoding of hashes where all keys that begin with a digit between 1 and 9 are lost:
http://bugs.php.net/bug.php?id=37746
Luckily I found a quick workaround. Just append chr(0x00) to your keys and the xmlrpc response will be correct. Maybe this will apply to encoding of hashes for requests too.
Amir.LaherATcomplinetDOTcom
26-Aug-2005 01:54
Beware this quirk: when you xmlrpc_encode a hash into xmlrpc, numeric keys will not be kept. Even strings containing numbers-only will be lost.
i.e.: xmlrpc_decode(xmlrpc_encode(array('123'=>456)));
returns: array(0=>456);
Apparently this is intentional functionality (see http://bugs.php.net/bug.php?id=21949)
2 workarounds:
1. prepend/append a string (even whitespace) to all keys, and strip them out at the other end. eg array('key_123'=>456);
2. create an array of hashes. array(array('key'=>123,'value'=>456));
I favour the second option because it's more deliberate.
... this also applies to xmlrpc_encode_request()
hfuecks at pinkgoblin dot com
15-Aug-2002 08:16
This function would be used by an XML-RPC server to convert PHP variables into an XML-RPC response.
It would be used within the PHP functions defined using xmlrpc_server_register_method()
Uses PHP variable reflection to assign the correct data types for the XML-RPC response. For example;
<?php
$params = array ( "one"=>"red","two"=>"blue","three"=>"green" );
$response = xmlrpc_encode ( $params );
echo ( $response );
?>
Produces;
<?xml version='1.0' encoding="utf-8" ?>
<params>
<param>
<value>
<struct>
<member>
<name>one</name>
<value>
<string>red</string>
</value>
</member>
<member>
<name>two</name>
<value>
<string>blue</string>
</value>
</member>
<member>
<name>three</name>
<value>
<string>green</string>
</value>
</member>
</struct>
</value>
</param>
</params>
While
<?php
$params = array ( "red", "blue", "green" );
$response = xmlrpc_encode ( $params );
echo ( $response );
?>
produces;
<?xml version='1.0' encoding="utf-8" ?>
<params>
<param>
<value>
<array>
<data>
<value>
<string>red</string>
</value>
<value>
<string>blue</string>
</value>
<value>
<string>green</string>
</value>
</data>
</array>
</value>
</param>
</params>
And
<?php
$params = 1;
$response = xmlrpc_encode ( $params );
echo ( $response );
?>
produces
<?xml version='1.0' encoding="utf-8" ?>
<params>
<param>
<value>
<int>1</int>
</value>
</param>
</params>
It's useful to be aware of the settype() function (settype).
For binary base64 data and XML-RPC iso8601 date times the xmlrpc_set_type() function should be used on a PHP variable before using xmlrpc_encode()
| |