source: trunk/decompilesample.php @ 751

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

decompiler: improvements late binding function, sample code organize

  • Property svn:eol-style set to native
File size: 4.5 KB
RevLine 
[734]1<?php
2
[747]3abstract class ClassName
[734]4{
[748]5    const CONST_VALUE = 'A constant value';
6
[736]7    /** doc */
[734]8    static public $static = array(
9        array('array'),
10        'str'
11        );
[736]12    /** doc */
[734]13    static public $public_static = array(2, 'str');
[736]14    /** doc */
[734]15    static private $private_static = array(2, 'str');
[736]16    /** doc */
[734]17    static protected $protected_static = array(2, 'str');
[736]18    /** doc */
[734]19    public $property = array(
20        array('array'),
21        'str'
22        );
[736]23    /** doc */
[734]24    public $public_property = array(2, 'str');
[736]25    /** doc */
[734]26    private $private_property = array(2, 'str');
[736]27    /** doc */
[734]28    protected $protected_property = array(2, 'str');
29
[736]30    /** doc */
[734]31    public function __construct($a, $b)
32    {
[747]33        echo CONST_VALUE;
34        echo ClassName::CONST_VALUE;
[749]35        unset(ClassName::$classProp);
36        unset($obj->objProp);
37        unset($this->thisProp);
38        unset($array['index']->valueProp);
39        unset($obj->array['index']);
40        unset($this->array['index']);
41        $obj->objProp = 1;
42        $this->thisProp = 1;
43        $array['index']->valueProp = 1;
44        $array['index'] = 1;
45        $array[1] = 1;
[734]46    }
47
[736]48    /** doc */
[749]49    abstract public function abastractMethod();
[747]50
51    /** doc */
[736]52    public function method(array $a = NULL, $b = NULL)
[734]53    {
54    }
55
[736]56    /** doc */
57    public function publicMethod(ClassName $a = NULL, $b = 2)
[734]58    {
59    }
60
[736]61    /** doc */
62    protected function protectedMethod(ClassName $a, $b = array(
63        array('array')
64        ))
[734]65    {
[737]66        $runtimeArray = array('1');
67        $runtimeArray2 = array(
68            '1',
69            array()
70            );
71        $runtimeArray3 = array(
72            'a' => '1',
73            2   => array()
74            );
[734]75        return 'protected';
76    }
77
[736]78    /** doc */
79    private function privateMethod(ClassName $a, $b = NULL)
[734]80    {
81        return 'private';
82    }
83}
84
[747]85interface IInterface
86{
87    public function nothing();
88}
89
[749]90function f1($f)
91{
[751]92    echo __FUNCTION__;
[749]93    echo $f;
94}
95
[747]96final class Child extends ClassName implements IInterface
97{
98    public function __construct()
99    {
100        parent::__construct();
[749]101        ClassName::__construct();
[747]102        echo __CLASS__;
103        echo __METHOD__;
[749]104        throw new Exception();
105        $this->methodCall();
[747]106    }
107
[749]108    public function __destruct()
109    {
110        parent::__destruct();
111        functionCall();
112    }
113
114    static public function __callStatic($name, $args)
115    {
116    }
117
118    public function __toString()
119    {
120    }
121
[748]122    public function __set($name, $value)
[747]123    {
124    }
125
[748]126    public function __get($name)
[747]127    {
128    }
129
[748]130    public function __isset($name)
[747]131    {
132    }
133
[748]134    public function __unset($name)
[747]135    {
136    }
137
[748]138    public function __sleep()
[747]139    {
140    }
141
[748]142    public function __wakeup()
[747]143    {
144    }
[749]145
146    public function __clone()
147    {
148        return array();
149    }
[747]150}
151
[751]152if ($late) {
153class LateBindingClass
154{}
155
156function lateBindingFunction($arg)
157{
158    echo 'lateFunction';
159}
160}
161
[750]162echo "\r\n";
163echo "\r";
164echo "\n";
[742]165echo str_replace(array('a' => 'a', 'b' => 'c'), 'b');
[748]166$object = new ClassName();
[749]167$object = new $className();
[751]168$result = $object instanceof ClassName;
[747]169$cloned = clone $object;
170$a = 1;
171$a = $b + $c;
172$a = $b + 1;
173$a = 1 + $b;
174$a = $b - $c;
175$a = $b * $c;
176$a = $b / $c;
177$a = $b % $c;
178$a = $b . $c;
179$a = $b = $c;
180$a = $b & $c;
181$a = $b | $c;
182$a = $b ^ $c;
183$a = ~$b;
184$a = $b >> $c;
185$a = $b >> $c;
186$a = $b == $c;
187$a = $b === $c;
188$a = $b != $c;
189$a = $b < $c;
190$a = $b <= $c;
191$a = $b <= $c;
192$a = $b++;
193$a = ++$b;
[749]194$a = $obj->b++;
195$a = ++$obj->b;
[747]196$a = $b--;
197$a = --$b;
[749]198$a = $obj->b--;
199$a = --$obj->b;
[751]200$a = $b xor $c;
201$a = !$b;
[747]202$a = $b and $c;
203$a = $b or $c;
204$a = $b && $c;
205$a = $b || $c;
[749]206$a = $b ? $c : $d;
207$a = f1() ? f2() : f3();
[747]208
[751]209try {
210    echo 'outer try 1';
211    try {
212        echo 'inner try';
213    }
214    catch (InnerException $e) {
215        echo $e;
216    }
217    echo 'outer try 2';
218}
219catch (OuterException $e) {
220    echo $e;
221}
222
[747]223if ($a) {
224    echo 'if ($a)';
225}
226else if ($b) {
227    echo 'else if ($b)';
228}
229else {
230    echo 'else';
231}
232
233while (false) {
234    echo 'while';
235}
236
237do {
238    echo 'do/while';
239} while (false);
240
241for ($i = 1; $i < 10; ++$i) {
242    echo $i;
243    break;
244}
245
246foreach ($array as $key => $value) {
[749]247    echo $key . ' = ' . $value . "\n";
[747]248    continue;
249}
250
[743]251switch ($switch) {
252case 'case1':
253    echo 'case1';
254    break;
255
256case 'case2':
257    echo 'case2';
258    break;
259
260default:
261    echo 'default';
262    break;
263}
264
[747]265declare (ticks=1) {
266    echo 1;
267    echo 2;
268}
269
270require 'require.php';
271require_once 'require_once.php';
272include 'include.php';
273include_once 'include_once.php';
[751]274echo __FILE__;
275echo __LINE__;
[747]276
[749]277//* >= PHP 5.3
278echo $this::CONST_VALUE;
279echo $a::CONST_VALUE;
280$this::__construct();
281$obj::__construct();
282
283$a = $b ?: $d;
284$a = f1() ?: f2();
285
286echo 'goto a';
[747]287goto a;
288
[749]289for ($i = 1; $i <= 2; ++$i) {
290    goto a;
291}
292
[747]293a:
[749]294echo 'label a';
[747]295echo preg_replace_callback('~-([a-z])~', function ($match) {
[749]296    return strtoupper($match[1]);
[747]297}, 'hello-world');
[749]298$greet = function ($name) {
[747]299    printf("Hello %s\r\n", $name);
300};
301$greet('World');
302$greet('PHP');
[749]303$total = 0;
304$callback = function ($quantity, $product) use ($tax, &$total) {
305    $pricePerItem = constant('PRICE_' . strtoupper($product));
306    $total += $pricePerItem * $quantity * ($tax + 1);
[747]307};
[749]308// */
[747]309
[734]310?>
Note: See TracBrowser for help on using the repository browser.