source: trunk/mod_disassembler/sample5.php @ 1331

Last change on this file since 1331 was 1331, checked in by moo, 14 months ago

separate PHP 4/5 decompile sample

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