xref: /PHP-8.1/tests/lang/execution_order.phpt (revision 782352c5)
1--TEST--
2Execution order of variables
3--FILE--
4<?php
5
6/* strings and concat */
7
8class strclass {
9   var $str = "bad";
10   static $statstr = "bad";
11}
12
13$a = "bad";
14$b = "good";
15echo "1)";
16$c = $a.($a=$b);
17echo $c;
18echo "\r\n";
19
20$a = "bad";
21$b = "good";
22$c = ($a=$b).$a;
23echo "2)";
24echo $c;
25echo "\r\n";
26
27
28$str = new strclass();
29$c = $str->str.($str->str="good");
30echo "3)";
31echo $c;
32echo "\r\n";
33
34$str->str = "bad";
35
36$c = ($str->str="good").$str->str;
37echo "4)";
38echo $c;
39echo "\r\n";
40
41$c = strclass::$statstr.(strclass::$statstr="good");
42echo "5)";
43echo $c;
44echo "\r\n";
45
46strclass::$statstr = "bad";
47
48$c = (strclass::$statstr="good").strclass::$statstr;
49echo "6)";
50echo $c;
51echo "\r\n";
52
53
54function foo() {
55   global $a;
56   $a = "good";
57   return $a;
58}
59
60
61$a = "bad";
62echo "7)";
63echo foo() . $a;
64echo "\r\n";
65
66$a = "bad";
67echo "8)";
68echo $a . foo();
69echo "\r\n";
70
71/* other operators */
72
73$x = 1;
74$z = $x - ($x++);
75echo "9)";
76echo $z;
77echo "\r\n";
78
79$x = 1;
80$z = ($x++) - $x;
81echo "10)";
82echo $z;
83echo "\r\n";
84
85$x = 1;
86$z = $x - (++$x);
87echo "11)";
88echo $z;
89echo "\r\n";
90
91$x = 1;
92$z = (++$x) - $x;
93echo "12)";
94echo $z;
95echo "\r\n";
96
97
98$x = 1;
99$y = 3;
100$z = $x - ($x=$y);
101echo "13)";
102echo $z;
103echo "\r\n";
104
105$x = 1;
106$y = 3;
107$z = ($x=$y) - $x;
108echo "14)";
109echo $z;
110echo "\r\n";
111
112
113$a = 100;
114$b = 200;
115echo "15)";
116echo $a + ($a=$b);
117echo "\r\n";
118
119$a = 100;
120$b = 200;
121echo "16)";
122echo ($a=$b) + $a;
123echo "\r\n";
124
125
126$a = array(100,200);
127$i = 0;
128
129echo "17)";
130echo $a[$i++] + $a[$i++];
131echo "\r\n";
132
133$i = -1;
134echo "18)";
135echo $a[++$i] + $a[++$i];
136echo "\r\n";
137
138$i = 0;
139echo "19)";
140echo $a[$i] + ($a[$i]=400);
141echo "\r\n";
142
143
144$a[0] = 100;
145echo "20)";
146echo ($a[$i]=400) + $a[$i];
147echo "\r\n";
148
149
150class c {
151   var $val = 10;
152   static $stat = 20;
153}
154
155echo "21)";
156echo c::$stat + (c::$stat=200);
157echo "\r\n";
158
159echo "22)";
160echo (c::$stat=300) + c::$stat;
161echo "\r\n";
162
163$c = new c();
164
165echo "23)";
166echo $c->val + ($c->val=200);
167echo "\r\n";
168
169echo "24)";
170echo ($c->val=300) + $c->val;
171echo "\r\n";
172
173?>
174--EXPECT--
1751)goodgood
1762)goodgood
1773)badgood
1784)goodgood
1795)badgood
1806)goodgood
1817)goodgood
1828)goodgood
1839)1
18410)-1
18511)0
18612)0
18713)0
18814)0
18915)400
19016)400
19117)300
19218)300
19319)500
19420)800
19521)220
19622)600
19723)210
19824)600
199