source: trunk/decompilesample.php @ 750

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

decompiler: dirty improvement for \r\n

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