Config.w32: link to libssl.lib & libcrypto.lib
[m6w6/ext-http] / tests / querystring001_a.phpt
1 --TEST--
2 query string
3 --SKIPIF--
4 <?php
5 include("skipif.inc");
6 version_compare(PHP_VERSION, "7.2.0-dev", ">=") or die("skip only for PHP >= 7.2.0");
7 ?>
8 --GET--
9 str=abc&num=-123&dec=123.123&bool=1&arr[]=1&arr[]=2&ma[l1][l2]=2&ma[l2][l3][l4]=3
10 --FILE--
11 <?php
12 echo "Test\n";
13
14 printf("\nGlobal instance:\n");
15 $q = http\QueryString::getGlobalInstance();
16 printf("%s\n", $q);
17 $q = http\QueryString::getGlobalInstance();
18
19 printf("\nStandard getters:\n");
20 var_dump($q->getString("str"));
21 var_dump($q->getInt("num"));
22 var_dump($q->getFloat("dec"));
23 var_dump($q->getInt("dec"));
24 var_dump($q->getFloat("dec"));
25 var_dump($q->getBool("bool"));
26 var_dump($q->getInt("bool"));
27 var_dump($q->getBool("num"));
28 var_dump($q->getInt("num"));
29 var_dump($q->getArray("arr"));
30 var_dump($q->getArray("ma"));
31 var_dump($q->getObject("arr"));
32 var_dump($q->getObject("ma"));
33
34 $s = $q->toString();
35
36 printf("\nClone modifications do not alter global instance:\n");
37 $q->mod(array("arr" => array(3 => 3)));
38 printf("%s\n", $q);
39
40 printf("\nClone modifications do not alter standard instance:\n");
41 $q2 = new http\QueryString($s);
42 $q3 = $q2->mod(array("arr" => array(3 => 3)));
43 printf("%s\n%s\n", $q2, $q3);
44 #var_dump($q2, $q3);
45
46 printf("\nIterator:\n");
47 $it = new RecursiveIteratorIterator($q2, RecursiveIteratorIterator::SELF_FIRST);
48 foreach ($it as $k => $v) {
49 $i = $it->getDepth()*8;
50 @printf("%{$i}s: %s\n", $k, $v);
51 }
52
53 printf("\nReplace a multi dimensional key:\n");
54 printf("%s\n", $q2->mod(array("ma" => null))->set(array("ma" => array("l1" => false))));
55
56 printf("\nXlate:\n");
57 $qu = new http\QueryString("ü=ö");
58 printf("utf8: %s\n", $qu);
59 printf("latin1: %s\n", method_exists($qu, "xlate") ? $qu->xlate("utf-8", "latin1") : "%FC=%F6");
60
61 printf("\nOffsets:\n");
62 var_dump($q2["ma"]);
63 $q2["ma"] = array("bye");
64 var_dump($q2["ma"]);
65 var_dump(isset($q2["ma"]));
66 unset($q2["ma"]);
67 var_dump(isset($q2["ma"]));
68
69 echo "Done\n";
70 ?>
71 --EXPECTF--
72 Test
73
74 Global instance:
75 str=abc&num=-123&dec=123.123&bool=1&arr%5B0%5D=1&arr%5B1%5D=2&ma%5Bl1%5D%5Bl2%5D=2&ma%5Bl2%5D%5Bl3%5D%5Bl4%5D=3
76
77 Standard getters:
78 string(3) "abc"
79 int(-123)
80 float(123.123)
81 int(123)
82 float(123.123)
83 bool(true)
84 int(1)
85 bool(true)
86 int(-123)
87 array(2) {
88 [0]=>
89 string(1) "1"
90 [1]=>
91 string(1) "2"
92 }
93 array(2) {
94 ["l1"]=>
95 array(1) {
96 ["l2"]=>
97 string(1) "2"
98 }
99 ["l2"]=>
100 array(1) {
101 ["l3"]=>
102 array(1) {
103 ["l4"]=>
104 string(1) "3"
105 }
106 }
107 }
108 object(stdClass)#%d (2) {
109 ["0"]=>
110 string(1) "1"
111 ["1"]=>
112 string(1) "2"
113 }
114 object(stdClass)#%d (2) {
115 ["l1"]=>
116 array(1) {
117 ["l2"]=>
118 string(1) "2"
119 }
120 ["l2"]=>
121 array(1) {
122 ["l3"]=>
123 array(1) {
124 ["l4"]=>
125 string(1) "3"
126 }
127 }
128 }
129
130 Clone modifications do not alter global instance:
131 str=abc&num=-123&dec=123.123&bool=1&arr%5B0%5D=1&arr%5B1%5D=2&ma%5Bl1%5D%5Bl2%5D=2&ma%5Bl2%5D%5Bl3%5D%5Bl4%5D=3
132
133 Clone modifications do not alter standard instance:
134 str=abc&num=-123&dec=123.123&bool=1&arr%5B0%5D=1&arr%5B1%5D=2&ma%5Bl1%5D%5Bl2%5D=2&ma%5Bl2%5D%5Bl3%5D%5Bl4%5D=3
135 str=abc&num=-123&dec=123.123&bool=1&arr%5B0%5D=1&arr%5B1%5D=2&arr%5B3%5D=3&ma%5Bl1%5D%5Bl2%5D=2&ma%5Bl2%5D%5Bl3%5D%5Bl4%5D=3
136
137 Iterator:
138 str: abc
139 num: -123
140 dec: 123.123
141 bool: 1
142 arr: Array
143 0: 1
144 1: 2
145 ma: Array
146 l1: Array
147 l2: 2
148 l2: Array
149 l3: Array
150 l4: 3
151
152 Replace a multi dimensional key:
153 str=abc&num=-123&dec=123.123&bool=1&arr%5B0%5D=1&arr%5B1%5D=2&ma%5Bl1%5D=
154
155 Xlate:
156 utf8: %C3%BC=%C3%B6
157 latin1: %FC=%F6
158
159 Offsets:
160 array(2) {
161 ["l1"]=>
162 array(1) {
163 ["l2"]=>
164 string(1) "2"
165 }
166 ["l2"]=>
167 array(1) {
168 ["l3"]=>
169 array(1) {
170 ["l4"]=>
171 string(1) "3"
172 }
173 }
174 }
175 array(1) {
176 [0]=>
177 string(3) "bye"
178 }
179 bool(true)
180 bool(false)
181 Done