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