source: trunk/mod_disassembler/sample.cpp.php @ 1373

Last change on this file since 1373 was 1373, checked in by moo, 13 months ago

update decompile sample

  • Property svn:eol-style set to native
File size: 9.4 KB
Line 
1<?php
2#if PHP_VERSION >= 500
3#   define PublicMethod public
4#else
5#   define ClassName classname
6#   define PublicMethod
7#   define abstract
8#   define innerIf_ innerif_
9#   define emptySwitch emptyswitch
10#   define defaultSwitch defaultswitch
11#endif
12#if PHP_VERSION >= 520
13#else
14#   define __callStatic __callstatic
15#   define __toString __tostring
16#endif
17#if PHP_VERSION >= 530
18
19namespace ns;
20#endif
21
22abstract class ClassName
23{
24#if PHP_VERSION >= 500
25    const CONST_VALUE = 'A constant value';
26
27    /** doc */
28    static public $static = array(
29        0           => array('array'),
30        1           => 'str',
31        CONST_VALUE => CONST_VALUE
32        );
33    static public $static2 = array(self::CONST_VALUE => self::CONST_VALUE);
34    /** doc */
35    static public $public_static = array(2, 'str');
36    /** doc */
37    static private $private_static = array(2, 'str');
38    static private $private_static2 = array(self::CONST_VALUE => self::CONST_VALUE);
39    /** doc */
40    static protected $protected_static = array(2, 'str');
41    static protected $protected_static2 = array(self::CONST_VALUE => self::CONST_VALUE);
42    /** doc */
43    public $property = array(
44        array('array'),
45        'str'
46        );
47    /** doc */
48    public $public_property = array(2, 'str');
49    /** doc */
50    private $private_property = array(2, 'str');
51    /** doc */
52    protected $protected_property = array(2, 'str');
53#else
54    var $property = array(
55        array('array'),
56        'str'
57        );
58#endif
59
60#if PHP_VERSION >= 500
61    /** doc */
62#endif
63    PublicMethod function __construct($a, $b)
64    {
65        static $array = array(
66            0           => array('array'),
67            1           => 'str',
68            CONST_VALUE => CONST_VALUE
69            );
70        static $a = 1;
71        static $str = 'string';
72        echo CONST_VALUE;
73#if PHP_VERSION >= 500
74        echo ClassName::CONST_VALUE;
75        empty(ClassName::$classProp);
76        isset(ClassName::$classProp);
77        unset(ClassName::$classProp);
78        ClassName::$classProp = 1;
79        echo ClassName::$classProp;
80#endif
81        empty($obj->objProp);
82        isset($obj->objProp);
83#if PHP_VERSION >= 500
84        unset($obj->objProp);
85#endif
86        $obj->objProp = 1;
87        echo $obj->objProp;
88        empty($this->thisProp);
89        isset($this->thisProp);
90#if PHP_VERSION >= 500
91        unset($this->thisProp);
92#endif
93        $this->thisProp = 1;
94        echo $this->thisProp;
95#if PHP_VERSION >= 500
96        unset($array['index']->valueProp);
97#endif
98        unset($obj->array['index']);
99        unset($this->array['index']);
100        empty($_GET['get']);
101        isset($_GET['get']);
102        unset($_GET['get']);
103        $_GET['get'] = 1;
104        echo $_GET['get'];
105        isset($GLOBALS['global']);
106        empty($GLOBALS['global']);
107        unset($GLOBALS['global']);
108        $GLOBALS['global'] = 1;
109        echo $GLOBALS['global'];
110        empty($array['index']);
111        isset($array['index']);
112        unset($array['index']);
113        $array['index'] = 1;
114        echo $array['index'];
115        empty($array['index']->indexProp);
116        isset($array['index']->indexProp);
117#if PHP_VERSION >= 500
118        unset($array['index']->indexProp);
119#endif
120        $array['index']->indexProp = 1;
121        echo $array['index']->indexProp;
122        empty($GLOBALS['var']->indexProp);
123        isset($GLOBALS['var']->indexProp);
124#if PHP_VERSION >= 500
125        unset($GLOBALS['var']->indexProp);
126#endif
127        $GLOBALS['var']->indexProp = 1;
128        echo $GLOBALS['var']->indexProp;
129        ClassName::__construct();
130        ClassName::$func();
131        echo __CLASS__;
132        echo __METHOD__;
133        echo __FUNCTION__;
134        $this->methodCall();
135#if PHP_VERSION >= 500
136        throw new Exception();
137        new Exception();
138#endif
139    }
140#if PHP_VERSION >= 500
141
142    /** doc */
143    abstract public function abastractMethod();
144#endif
145
146#if PHP_VERSION >= 500
147    /** doc */
148#endif
149    PublicMethod function method($a = NULL, $b = NULL)
150    {
151    }
152#if PHP_VERSION >= 500
153
154    /** doc */
155    protected function protectedMethod(ClassName $a, $b = array(
156            array('array')
157            ))
158    {
159        $runtimeArray = array('1');
160        $runtimeArray2 = array(
161            '1',
162            array()
163            );
164        $runtimeArray3 = array(
165            'a' => '1',
166            2   => array()
167            );
168        return 'protected';
169    }
170
171    /** doc */
172    private function privateMethod(ClassName $a, $b = NULL)
173    {
174        return 'private';
175    }
176#endif
177}
178#if PHP_VERSION >= 500
179
180interface IInterface
181{
182    public function nothing();
183}
184#endif
185
186function f1($f)
187{
188    echo __FUNCTION__;
189    echo $f;
190#if PHP_VERSION >= 550
191
192    foreach ($a as $b) {
193        yield $b;
194    }
195
196    yield f1($b);
197#endif
198}
199#if PHP_VERSION >= 500
200
201final class Child extends ClassName implements IInterface
202{
203    public function __construct()
204    {
205        parent::__construct();
206    }
207
208    public function __destruct()
209    {
210        parent::__destruct();
211        functionCall();
212    }
213
214    static public function __callStatic($name, $args)
215    {
216        parent::__callStatic($name, $args);
217    }
218
219    public function __toString()
220    {
221        parent::__toString();
222    }
223
224    public function __set($name, $value)
225    {
226    }
227
228    public function __get($name)
229    {
230    }
231
232    public function __isset($name)
233    {
234    }
235
236    public function __unset($name)
237    {
238    }
239
240    public function __sleep()
241    {
242    }
243
244    public function __wakeup()
245    {
246    }
247
248    public function __clone()
249    {
250        return array();
251    }
252}
253#endif
254
255if ($late) {
256    class LateBindingClass
257    {
258        PublicMethod function __construct()
259        {
260        }
261    }
262
263    function lateBindingFunction($arg)
264    {
265        echo 'lateFunction';
266        return new lateBindingFunction();
267    }
268}
269
270echo "\r\n";
271echo "\r";
272echo "\n";
273echo str_replace(array('a' => 'a', 'b' => 'c'), 'b');
274$object = new ClassName();
275$object = new $className();
276#if PHP_VERSION >= 500
277$result = $object instanceof ClassName;
278$cloned = clone $object;
279#endif
280$a = 1;
281$a = $b + $c;
282$a = $b + 1;
283$a = 1 + $b;
284$a = $b - $c;
285$a = $b * $c;
286$a = $b / $c;
287$a = $b % $c;
288$a = $b . $c;
289$a = $b = $c;
290$a = $b & $c;
291$a = $b | $c;
292$a = $b ^ $c;
293$a = ~$b;
294$a = -$b;
295$a = +$b;
296$a = $b >> $c;
297$a = $b >> $c;
298$a = $b == $c;
299$a = $b === $c;
300$a = $b != $c;
301$a = $b < $c;
302$a = $b <= $c;
303$a = $b <= $c;
304$a = $b++;
305$a = ++$b;
306$a = $obj->b++;
307$a = ++$obj->b;
308$a = $b--;
309$a = --$b;
310$a = $obj->b--;
311$a = --$obj->b;
312$a = !$b;
313$a = $b === $c;
314$a = $b !== $c;
315$a = $b << 2;
316$a = $b >> 3;
317$a += $b;
318$a -= $b;
319$a *= $b;
320$a /= $b;
321$a <<= $b;
322$a >>= $b;
323$a &= $b;
324$a |= $b;
325$a .= $b;
326$a %= $b;
327$a ^= $b;
328$a = 'a' . 'b';
329$a = 'a' . 'abc';
330@f1();
331print('1');
332$a = $array['index'];
333$a = $object->prop;
334$a = $this->prop;
335$array['index'] = 1;
336$object->prop = 1;
337$this->prop = 1;
338$a = isset($b);
339$a = empty($b);
340unset($b);
341$a = isset($array['index']);
342$a = empty($array['index']);
343unset($array['index']);
344$a = isset($object->prop);
345$a = empty($object->prop);
346#if PHP_VERSION >= 500
347unset($object->prop);
348#endif
349$a = isset($this->prop);
350$a = empty($this->prop);
351#if PHP_VERSION >= 500
352unset($this->prop);
353$a = isset(ClassName::$prop);
354$a = empty(ClassName::$prop);
355unset(ClassName::$prop);
356#endif
357$a = (int) $b;
358$a = (double) $b;
359$a = (string) $b;
360$a = (array) $b;
361$a = (object) $b;
362$a = (bool) $b;
363$a = (unset) $b;
364$a = (array) $b;
365$a = (object) $b;
366$a = ($b ? $c : $d);
367$a = (f1() ? f2() : f3());
368($a = $b) xor $c;
369($a = $b) and $c;
370($a = $b) or $c;
371$a = $b && $c;
372$a = $b || $c;
373#if PHP_VERSION >= 500
374
375do {
376    try {
377        echo 'outer try 1';
378
379        try {
380            echo 'inner try';
381        }
382        catch (InnerException $e) {
383            echo $e;
384        }
385        catch (InnerException2 $e2) {
386            echo $e2;
387        }
388#if PHP_VERSION >= 550
389        finally {
390            echo 'inner finally';
391        }
392#endif
393
394        echo 'outer try 2';
395    }
396    catch (OuterException $e) {
397        echo $e;
398    }
399    catch (OuterException2 $e2) {
400        echo $e2;
401    }
402#if PHP_VERSION >= 550
403    finally {
404        echo 'outer finally';
405    }
406#endif
407} while (0);
408#endif
409
410if (if_()) {
411    echo 'if';
412
413    if (innerIf_()) {
414        echo 'if innerIf';
415    }
416}
417else if (elseif_()) {
418    echo 'else if';
419
420    if (innerIf_()) {
421        echo 'if innerIf';
422    }
423}
424else {
425    if (innerIf_()) {
426        echo 'if innerIf';
427    }
428
429    echo 'else';
430}
431
432while (false) {
433    echo 'while';
434}
435
436do {
437    echo 'do/while';
438} while (false);
439
440$i = 1;
441
442for (; $i < 10; ++$i) {
443    echo $i;
444    break;
445}
446
447foreach ($array as $value) {
448    foreach ($value as $key => $value) {
449        echo $key . ' = ' . $value . "\n";
450        break 2;
451        continue;
452    }
453}
454
455switch ($normalSwitch) {
456case 'case1':
457    echo 'case1';
458
459    switch ($nestedSwitch) {
460    case 1:
461    }
462
463    break;
464
465case 'case2':
466    echo 'case2';
467    break;
468
469default:
470    switch ($nestedSwitch) {
471    case 1:
472    }
473
474    echo 'default';
475    break;
476}
477
478switch ($switchWithoutDefault) {
479case 'case1':
480    echo 'case1';
481    break;
482
483case 'case2':
484    echo 'case2';
485    break;
486}
487
488switch ($switchWithMiddleDefault) {
489case 'case1':
490    echo 'case1';
491    break;
492
493default:
494    echo 'default';
495    break;
496
497case 'case2':
498    echo 'case2';
499    break;
500}
501
502switch ($switchWithInitialDefault) {
503default:
504    echo 'default';
505    break;
506
507case 'case1':
508    echo 'case1';
509    break;
510
511case 'case2':
512    echo 'case2';
513    break;
514}
515
516switch (emptySwitch()) {
517}
518
519switch (defaultSwitch()) {
520default:
521}
522
523declare (ticks=1) {
524    echo 1;
525}
526
527while (1) {
528    declare (ticks=1) {
529        echo 2;
530    }
531}
532
533require 'require.php';
534require_once 'require_once.php';
535include 'include.php';
536include_once 'include_once.php';
537echo __FILE__;
538echo __LINE__;
539#if PHP_VERSION >= 530
540echo 'PHP 5.3+ code testing';
541const CONST_VALUE = 1;
542echo $this::CONST_VALUE;
543echo $a::CONST_VALUE;
544echo CONST_VALUE;
545$this::__construct();
546$obj::__construct();
547$a = $b ?: $d;
548$a = ($b ?: $d) + $c;
549$a = f1() ?: f2();
550$a = C::f1() ?: C::f2();
551$a = ($b ? $c : $d);
552$a = ($b ? $c : $d) + $c;
553$a = (f1() ? f3() : f2());
554
555if ($b ?: $d) {
556    echo 'if ($b ?: $d)';
557}
558
559if (($b ?: $d) + $c) {
560    echo 'if (($b ?: $d) + $c)';
561}
562
563if (f1() ?: f2()) {
564    echo 'if (f1() ?: f2())';
565}
566
567echo 'goto a';
568goto a;
569
570$i = 1;
571
572for (; $i <= 2; ++$i) {
573    goto a;
574}
575
576a:
577echo 'label a';
578echo preg_replace_callback('~-([a-z])~', function($match) {
579    return strtoupper($match[1]);
580}, 'hello-world');
581$greet = function($name) {
582    printf('Hello %s' . "\r\n" . '', $name);
583};
584$greet('World');
585$greet('PHP');
586$total = 0;
587$tax = 1;
588$callback = function($quantity, $product) use($tax, &$total) {
589    $tax = 'tax';
590    static $static1 = array(1);
591    static $static2;
592    $tax = 'tax';
593    $tax = --$tax;
594    $pricePerItem = constant('PRICE_' . strtoupper($product));
595    $total += $pricePerItem * $quantity * ($tax + 1);
596};
597#endif
598exit();
599
600?>
Note: See TracBrowser for help on using the repository browser.