source: trunk/decompilesample.php @ 807

Last change on this file since 807 was 807, checked in by moo, 4 years ago

Decompiler: for loop

  • Property svn:eol-style set to native
File size: 6.5 KB
RevLine 
[734]1<?php
2
[753]3//* >= PHP 5.3
4namespace ns;
5// */
6
[747]7abstract class ClassName
[734]8{
[748]9    const CONST_VALUE = 'A constant value';
10
[736]11    /** doc */
[734]12    static public $static = array(
13        array('array'),
14        'str'
15        );
[736]16    /** doc */
[734]17    static public $public_static = array(2, 'str');
[736]18    /** doc */
[734]19    static private $private_static = array(2, 'str');
[736]20    /** doc */
[734]21    static protected $protected_static = array(2, 'str');
[736]22    /** doc */
[734]23    public $property = array(
24        array('array'),
25        'str'
26        );
[736]27    /** doc */
[734]28    public $public_property = array(2, 'str');
[736]29    /** doc */
[734]30    private $private_property = array(2, 'str');
[736]31    /** doc */
[734]32    protected $protected_property = array(2, 'str');
33
[736]34    /** doc */
[734]35    public function __construct($a, $b)
36    {
[747]37        echo CONST_VALUE;
38        echo ClassName::CONST_VALUE;
[749]39        unset(ClassName::$classProp);
40        unset($obj->objProp);
41        unset($this->thisProp);
42        unset($array['index']->valueProp);
43        unset($obj->array['index']);
44        unset($this->array['index']);
45        $obj->objProp = 1;
46        $this->thisProp = 1;
47        $array['index']->valueProp = 1;
48        $array['index'] = 1;
49        $array[1] = 1;
[734]50    }
51
[736]52    /** doc */
[749]53    abstract public function abastractMethod();
[747]54
55    /** doc */
[736]56    public function method(array $a = NULL, $b = NULL)
[734]57    {
58    }
59
[736]60    /** doc */
61    public function publicMethod(ClassName $a = NULL, $b = 2)
[734]62    {
63    }
64
[736]65    /** doc */
66    protected function protectedMethod(ClassName $a, $b = array(
67        array('array')
68        ))
[734]69    {
[737]70        $runtimeArray = array('1');
71        $runtimeArray2 = array(
72            '1',
73            array()
74            );
75        $runtimeArray3 = array(
76            'a' => '1',
77            2   => array()
78            );
[734]79        return 'protected';
80    }
81
[736]82    /** doc */
83    private function privateMethod(ClassName $a, $b = NULL)
[734]84    {
85        return 'private';
86    }
87}
88
[747]89interface IInterface
90{
91    public function nothing();
92}
93
[749]94function f1($f)
95{
[751]96    echo __FUNCTION__;
[749]97    echo $f;
98}
99
[747]100final class Child extends ClassName implements IInterface
101{
102    public function __construct()
103    {
104        parent::__construct();
[749]105        ClassName::__construct();
[747]106        echo __CLASS__;
107        echo __METHOD__;
[749]108        throw new Exception();
109        $this->methodCall();
[747]110    }
111
[749]112    public function __destruct()
113    {
114        parent::__destruct();
115        functionCall();
116    }
117
118    static public function __callStatic($name, $args)
119    {
120    }
121
122    public function __toString()
123    {
124    }
125
[748]126    public function __set($name, $value)
[747]127    {
128    }
129
[748]130    public function __get($name)
[747]131    {
132    }
133
[748]134    public function __isset($name)
[747]135    {
136    }
137
[748]138    public function __unset($name)
[747]139    {
140    }
141
[748]142    public function __sleep()
[747]143    {
144    }
145
[748]146    public function __wakeup()
[747]147    {
148    }
[749]149
150    public function __clone()
151    {
152        return array();
153    }
[747]154}
155
[751]156if ($late) {
157class LateBindingClass
158{}
159
160function lateBindingFunction($arg)
161{
162    echo 'lateFunction';
163}
164}
165
[750]166echo "\r\n";
167echo "\r";
168echo "\n";
[742]169echo str_replace(array('a' => 'a', 'b' => 'c'), 'b');
[748]170$object = new ClassName();
[749]171$object = new $className();
[751]172$result = $object instanceof ClassName;
[747]173$cloned = clone $object;
174$a = 1;
175$a = $b + $c;
176$a = $b + 1;
177$a = 1 + $b;
178$a = $b - $c;
179$a = $b * $c;
180$a = $b / $c;
181$a = $b % $c;
182$a = $b . $c;
183$a = $b = $c;
184$a = $b & $c;
185$a = $b | $c;
186$a = $b ^ $c;
187$a = ~$b;
[758]188$a = -$b;
189$a = +$b;
[747]190$a = $b >> $c;
191$a = $b >> $c;
192$a = $b == $c;
193$a = $b === $c;
194$a = $b != $c;
195$a = $b < $c;
196$a = $b <= $c;
197$a = $b <= $c;
198$a = $b++;
199$a = ++$b;
[749]200$a = $obj->b++;
201$a = ++$obj->b;
[747]202$a = $b--;
203$a = --$b;
[749]204$a = $obj->b--;
205$a = --$obj->b;
[751]206$a = !$b;
[761]207$a = $b === $c;
208$a = $b !== $c;
209$a = $b << 2;
210$a = $b >> 3;
211$a += $b;
212$a -= $b;
213$a *= $b;
214$a /= $b;
215$a <<= $b;
216$a >>= $b;
217$a &= $b;
218$a |= $b;
219$a .= $b;
220$a %= $b;
221$a ^= $b;
222$a = 'a' . 'b';
223$a = 'a' . 'abc';
224@f1();
225print('1');
226ref(&$a);
227$a = $array['index'];
228$a = $object->prop;
229$a = $this->prop;
230$array['index'] = 1;
231$object->prop = 1;
232$this->prop = 1;
233$a = isset($b);
234$a = empty($b);
235$a = isset($array['index']);
236$a = empty($array['index']);
237$a = isset($object->prop);
238$a = empty($object->prop);
239$a = isset($this->prop);
240$a = empty($this->prop);
241$a = (int) $b;
242$a = (double) $b;
243$a = (string) $b;
244$a = (array) $b;
245$a = (object) $b;
246$a = (bool) $b;
247$a = (unset) $b;
248$a = (array) $b;
249$a = (object) $b;
250// PHP6+ $a = (scalar) $b;
[802]251$a = ($b ? $c : $d);
252$a = (f1() ? f2() : f3());
[805]253($a = $b) xor $c;
254($a = $b) and $c;
255($a = $b) or $c;
[747]256$a = $b && $c;
257$a = $b || $c;
258
[795]259do {
[751]260    try {
[795]261        echo 'outer try 1';
262
263        try {
264            echo 'inner try';
265        }
266        catch (InnerException $e) {
267            echo $e;
268        }
269
270        echo 'outer try 2';
[751]271    }
[795]272    catch (OuterException $e) {
[751]273        echo $e;
274    }
[795]275} while (0);
[751]276
[792]277if (if_()) {
278    echo 'if';
279    if (innerIf_()) {
280        echo 'if innerIf';
281    }
[747]282}
[792]283else if (elseif_()) {
284    echo 'else if';
285    if (innerIf_()) {
286        echo 'if innerIf';
287    }
[747]288}
289else {
[792]290    if (innerIf_()) {
291        echo 'if innerIf';
292    }
[747]293    echo 'else';
294}
295
296while (false) {
297    echo 'while';
298}
299
300do {
301    echo 'do/while';
302} while (false);
303
[807]304$i = 1;
305
306for (; $i < 10; ++$i) {
[747]307    echo $i;
308    break;
309}
310
311foreach ($array as $key => $value) {
[789]312    foreach ($value as $key => $value) {
[758]313        echo $key . ' = ' . $value . "\n";
314        break 2;
315        continue;
316    }
[747]317}
318
[790]319switch ($normalSwitch) {
[743]320case 'case1':
321    echo 'case1';
[790]322
323    switch ($nestedSwitch) {
324    case 1:
325    }
326
[743]327    break;
328
329case 'case2':
330    echo 'case2';
331    break;
332
333default:
[790]334    switch ($nestedSwitch) {
335    case 1:
336    }
337
[743]338    echo 'default';
339    break;
340}
341
[790]342switch ($switchWithoutDefault) {
343case 'case1':
344    echo 'case1';
345    break;
346
347case 'case2':
348    echo 'case2';
349    break;
350}
351
352switch ($switchWithMiddleDefault) {
353case 'case1':
354    echo 'case1';
355    break;
356
357default:
358    echo 'default';
359    break;
360
361case 'case2':
362    echo 'case2';
363    break;
364}
365
366switch ($switchWithInitialDefault) {
367default:
368    echo 'default';
369    break;
370
371case 'case1':
372    echo 'case1';
373    break;
374
375case 'case2':
376    echo 'case2';
377    break;
378}
379
380switch (emptySwitch()) {
381}
382
383switch (emptySwitch()) {
384default:
385}
386
[747]387declare (ticks=1) {
388    echo 1;
[793]389    while (1) {
390        echo 2;
391    }
[747]392}
393
394require 'require.php';
395require_once 'require_once.php';
396include 'include.php';
397include_once 'include_once.php';
[751]398echo __FILE__;
399echo __LINE__;
[747]400
[758]401//*
[752]402echo 'PHP 5.3+ code testing';
403const CONST_VALUE = 1;
[749]404echo $this::CONST_VALUE;
405echo $a::CONST_VALUE;
[752]406echo CONST_VALUE;
[749]407$this::__construct();
408$obj::__construct();
409$a = $b ?: $d;
[760]410$a = ($b ?: $d) + $c;
[749]411$a = f1() ?: f2();
[805]412$a = ($b ? $c : $d);
[799]413$a = ($b ? $c : $d) + $c;
[805]414$a = (f1() ? f3() : f2());
[749]415
[797]416if ($b ?: $d) {
417    echo 'if ($b ?: $d)';
418}
419
420if (($b ?: $d) + $c) {
421    echo 'if (($b ?: $d) + $c)';
422}
423
424if (f1() ?: f2()) {
425    echo 'if (f1() ?: f2())';
426}
427
[749]428echo 'goto a';
[747]429goto a;
430
[807]431$i = 1;
432
433for (; $i <= 2; ++$i) {
[749]434    goto a;
435}
436
[747]437a:
[749]438echo 'label a';
[786]439echo preg_replace_callback('~-([a-z])~', function($match) {
[749]440    return strtoupper($match[1]);
[747]441}, 'hello-world');
[786]442$greet = function($name) {
[747]443    printf("Hello %s\r\n", $name);
444};
445$greet('World');
446$greet('PHP');
[749]447$total = 0;
[758]448$tax = 1;
[781]449$callback = function($quantity, $product) use($tax, &$total) {
[758]450    $tax = 'tax';
[781]451    static $static1 = array(1);
452    static $static2;
453    $tax = 'tax';
[780]454    $tax = --$tax;
[749]455    $pricePerItem = constant('PRICE_' . strtoupper($product));
456    $total += $pricePerItem * $quantity * ($tax + 1);
[747]457};
[749]458// */
[761]459exit();
[747]460
[734]461?>
Note: See TracBrowser for help on using the repository browser.