1
|
|
|
<?php |
2
|
|
|
require_once __DIR__ . "/client/_prepend.php"; |
3
|
|
|
|
4
|
1 |
|
output('<html lang="en"> |
5
|
|
|
<head><title>phpxmlrpc</title></head> |
6
|
|
|
<body> |
7
|
|
|
'); |
8
|
|
|
|
9
|
1 |
|
output("<h3>Testing value serialization</h3>\n"); |
10
|
|
|
output("<p>Please note that in most cases you are better off using `new PhpXmlRpc\Encoder()->encode()` to create nested Value objects</p>\n"); |
11
|
1 |
|
|
12
|
|
|
$v = new PhpXmlRpc\Value(1234, 'int'); |
13
|
1 |
|
output("Int: <PRE>" . htmlentities($v->serialize()) . "</PRE>"); |
14
|
1 |
|
|
15
|
1 |
|
$v = new PhpXmlRpc\Value('Are the following characters escaped? < & >'); |
16
|
1 |
|
output("String <PRE>" . htmlentities($v->serialize()) . "</PRE>"); |
17
|
|
|
|
18
|
1 |
|
$v = new PhpXmlRpc\Value(true, 'boolean'); |
19
|
|
|
output("Boolean: <PRE>" . htmlentities($v->serialize()) . "</PRE>"); |
20
|
1 |
|
|
21
|
1 |
|
$v = new PhpXmlRpc\Value(1234.5678, 'double'); |
22
|
1 |
|
output("Double: <PRE>" . htmlentities($v->serialize()) . "</PRE>"); |
23
|
|
|
|
24
|
1 |
|
$v = new PhpXmlRpc\Value(time(), 'dateTime.iso8601'); |
25
|
|
|
output("Datetime (from timestamp): <PRE>" . htmlentities($v->serialize()) . "</PRE>"); |
26
|
|
|
$v = new PhpXmlRpc\Value(new DateTime(), 'dateTime.iso8601'); |
27
|
1 |
|
output("Datetime (from php DateTime): <PRE>" . htmlentities($v->serialize()) . "</PRE>"); |
28
|
|
|
|
29
|
1 |
|
$v = new PhpXmlRpc\Value('hello world', 'base64'); |
30
|
|
|
output("Base64: <PRE>" . htmlentities($v->serialize()) . "</PRE>"); |
31
|
1 |
|
output("(value of base64 string is: '" . $v->scalarVal() . "')<BR><BR>"); |
32
|
|
|
|
33
|
1 |
|
$v = new PhpXmlRpc\Value( |
34
|
1 |
|
array( |
35
|
1 |
|
new PhpXmlRpc\Value('1234', 'i4'), |
36
|
1 |
|
new PhpXmlRpc\Value("Can you spot the greek letter beta? β", 'string'), |
37
|
1 |
|
new PhpXmlRpc\Value(1, 'boolean'), |
38
|
1 |
|
new PhpXmlRpc\Value(1234, 'double'), |
39
|
|
|
new PhpXmlRpc\Value(new DateTime(), 'dateTime.iso8601'), |
40
|
1 |
|
new PhpXmlRpc\Value('', 'base64'), |
41
|
|
|
), |
42
|
1 |
|
"array" |
43
|
1 |
|
); |
44
|
1 |
|
output("Array: <PRE>" . htmlentities($v->serialize()) . "</PRE>"); |
45
|
|
|
|
46
|
1 |
|
$v = new PhpXmlRpc\Value( |
47
|
1 |
|
array( |
48
|
|
|
"anInt" => new PhpXmlRpc\Value(23, 'int'), |
49
|
1 |
|
"aString" => new PhpXmlRpc\Value('foobarwhizz'), |
50
|
|
|
"anEmptyArray" => new PhpXmlRpc\Value( |
51
|
|
|
array(), |
52
|
1 |
|
"array" |
53
|
|
|
), |
54
|
|
|
"aNestedStruct" => new PhpXmlRpc\Value( |
55
|
1 |
|
array( |
56
|
|
|
"one" => new PhpXmlRpc\Value(1, 'int'), |
57
|
1 |
|
"two" => new PhpXmlRpc\Value(2, 'int'), |
58
|
|
|
), |
59
|
1 |
|
"struct" |
60
|
|
|
), |
61
|
1 |
|
), |
62
|
|
|
"struct" |
63
|
|
|
); |
64
|
|
|
output("Struct: <PRE>" . htmlentities($v->serialize()) . "</PRE>"); |
65
|
|
|
|
66
|
|
|
$w = new PhpXmlRpc\Value(array($v), 'array'); |
67
|
|
|
output("Array containing a struct: <PRE>" . htmlentities($w->serialize()) . "</PRE>"); |
68
|
|
|
|
69
|
1 |
|
class MyClass |
70
|
|
|
{ |
71
|
1 |
|
public $public = 'a public property'; |
72
|
1 |
|
protected $protected = 'a protected one'; |
73
|
|
|
private $private = 'a private one'; |
|
|
|
|
74
|
1 |
|
} |
75
|
1 |
|
$myObject = new MyClass(); |
76
|
|
|
// the public property is the only one which will be serialized. As such, it has to be of type Value |
77
|
1 |
|
$myObject->public = new \PhpXmlRpc\Value('a public property, wrapped'); |
78
|
1 |
|
$w = new PhpXmlRpc\Value($myObject, 'struct'); |
79
|
1 |
|
output("Struct encoding a php object: <PRE>" . htmlentities($w->serialize()) . "</PRE>"); |
80
|
|
|
|
81
|
1 |
|
output("<h3>Testing value serialization - xml-rpc extensions</h3>\n"); |
82
|
|
|
$v = new PhpXmlRpc\Value(1234, 'i8'); |
83
|
1 |
|
output("I8: <PRE>" . htmlentities($v->serialize()) . "</PRE>"); |
84
|
1 |
|
$v = new PhpXmlRpc\Value(null, 'null'); |
85
|
1 |
|
output("Null: <PRE>" . htmlentities($v->serialize()) . "</PRE>"); |
86
|
1 |
|
\PhpXmlRpc\PhpXmlRpc::$xmlrpc_null_apache_encoding = true; |
87
|
1 |
|
output("Null, alternative: <PRE>" . htmlentities($v->serialize()) . "</PRE>"); |
88
|
1 |
|
|
89
|
1 |
|
output("<h3>Testing value serialization - character encoding</h3>\n"); |
90
|
1 |
|
// The greek word 'kosme' |
91
|
|
|
$v = new PhpXmlRpc\Value('κόσμε'); |
92
|
1 |
|
output("Greek (default encoding): <PRE>" . htmlentities($v->serialize()) . "</PRE>"); |
93
|
|
|
output("Greek (utf8 encoding): <PRE>" . htmlentities($v->serialize('UTF-8')) . "</PRE>"); |
94
|
1 |
|
if (function_exists('mb_convert_encoding')) { |
95
|
|
|
output("Greek (ISO-8859-7 encoding): <PRE>" . htmlentities($v->serialize('ISO-8859-7')) . "</PRE>"); |
96
|
1 |
|
} |
97
|
|
|
|
98
|
|
|
output("<h3>Testing request serialization</h3>\n"); |
99
|
|
|
$req = new PhpXmlRpc\Request('examples.getStateName'); |
100
|
|
|
$req->method('examples.getStateName'); |
101
|
|
|
$req->addParam(new PhpXmlRpc\Value(42, 'int')); |
102
|
|
|
output("<PRE>" . htmlentities($req->serialize()) . "</PRE>"); |
103
|
|
|
|
104
|
|
|
output("<h3>Testing response serialization</h3>\n"); |
105
|
|
|
$resp = new PhpXmlRpc\Response(new PhpXmlRpc\Value('The meaning of life')); |
106
|
|
|
output("<PRE>" . htmlentities($resp->serialize()) . "</PRE>"); |
107
|
|
|
|
108
|
|
|
output("<h3>Testing ISO date formatting</h3><pre>\n"); |
109
|
|
|
$t = time(); |
110
|
|
|
$date = PhpXmlRpc\Helper\Date::iso8601Encode($t); |
111
|
|
|
output("Now is $t --> $date\n"); |
112
|
|
|
output("Or in UTC, that is " . PhpXmlRpc\Helper\Date::iso8601Encode($t, 1) . "\n"); |
113
|
|
|
$tb = PhpXmlRpc\Helper\Date::iso8601Decode($date); |
114
|
|
|
output("That is to say $date --> $tb\n"); |
115
|
|
|
output("Which comes out at " . PhpXmlRpc\Helper\Date::iso8601Encode($tb) . "\n"); |
116
|
|
|
output("Which was the time in UTC at " . PhpXmlRpc\Helper\Date::iso8601Encode($tb, 1) . "\n"); |
117
|
|
|
output("</pre>\n"); |
118
|
|
|
|
119
|
|
|
output("<h3>Testing reduced-precision formatting for doubles</h3><pre>\n"); |
120
|
|
|
$v = new PhpXmlRpc\Value(1234.56789, 'double'); |
121
|
|
|
\PhpXmlRpc\PhpXmlRpc::$xmlpc_double_precision = 2; |
122
|
|
|
output("Double, limited precision: <PRE>" . htmlentities($v->serialize()) . "</PRE>"); |
123
|
|
|
|
124
|
|
|
output('</body></html>'); |
125
|
|
|
|