Ignore:
Timestamp:
2011-04-16T21:01:39+02:00 (4 years ago)
Author:
moo
Message:

decompiler: massive improvements for php 5 and 5.3

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/decompilesample.php

    r748 r749  
    3232    {
    3333        echo CONST_VALUE;
    34         echo $this::CONST_VALUE;
    35         echo $a::CONST_VALUE;
    3634        echo ClassName::CONST_VALUE;
    37     }
    38 
    39     /** doc */
    40     abstract function abastractMethod();
     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();
    4150
    4251    /** doc */
     
    7988}
    8089
     90function f1($f)
     91{
     92    echo $f;
     93}
     94
    8195final class Child extends ClassName implements IInterface
    8296{
     
    8498    {
    8599        parent::__construct();
     100        ClassName::__construct();
    86101        echo __CLASS__;
    87102        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    {
    88119    }
    89120
     
    110141    public function __wakeup()
    111142    {
     143    }
     144
     145    public function __clone()
     146    {
     147        return array();
    112148    }
    113149}
     
    115151echo str_replace(array('a' => 'a', 'b' => 'c'), 'b');
    116152$object = new ClassName();
     153$object = new $className();
     154try {
     155    echo 'code being try';
     156}
     157catch (Exception $e) {
     158    echo $e;
     159}
    117160$cloned = clone $object;
    118161$a = 1;
     
    135178$a = $b === $c;
    136179$a = $b != $c;
    137 $a = $b <> $c;
    138180$a = $b < $c;
    139181$a = $b <= $c;
    140 $a = $b > $c;
    141182$a = $b <= $c;
    142183$a = $b++;
    143184$a = ++$b;
     185$a = $obj->b++;
     186$a = ++$obj->b;
    144187$a = $b--;
    145188$a = --$b;
     189$a = $obj->b--;
     190$a = --$obj->b;
    146191$a = $b and $c;
    147192$a = $b or $c;
     
    150195$a = $b && $c;
    151196$a = $b || $c;
     197$a = $b ? $c : $d;
     198$a = f1() ? f2() : f3();
    152199$a = $b instanceof ClassName;
    153200
     
    176223
    177224foreach ($array as $key => $value) {
    178     echo "$key = $value\n";
     225    echo $key . ' = ' . $value . "\n";
    179226    continue;
    180227}
     
    204251include_once 'include_once.php';
    205252
     253//* >= PHP 5.3
     254echo $this::CONST_VALUE;
     255echo $a::CONST_VALUE;
     256$this::__construct();
     257$obj::__construct();
     258
     259$a = $b ?: $d;
     260$a = f1() ?: f2();
     261
     262echo 'goto a';
    206263goto a;
    207 echo 'foo';
     264
     265for ($i = 1; $i <= 2; ++$i) {
     266    goto a;
     267}
    208268
    209269a:
    210 echo 'bar';
    211 
     270echo 'label a';
    212271echo preg_replace_callback('~-([a-z])~', function ($match) {
    213         return strtoupper($match[1]);
     272    return strtoupper($match[1]);
    214273}, 'hello-world');
    215 
    216 $greet = function($name)
    217 {
     274$greet = function ($name) {
    218275    printf("Hello %s\r\n", $name);
    219276};
    220277$greet('World');
    221278$greet('PHP');
    222 
    223 $total = 0.00;
    224 
    225 $callback = function ($quantity, $product) use ($tax, &$total)
    226 {
    227     $pricePerItem = constant(__CLASS__ . "::PRICE_" . strtoupper($product));
    228     $total += ($pricePerItem * $quantity) * ($tax + 1.0);
     279$total = 0;
     280$callback = function ($quantity, $product) use ($tax, &$total) {
     281    $pricePerItem = constant('PRICE_' . strtoupper($product));
     282    $total += $pricePerItem * $quantity * ($tax + 1);
    229283};
     284// */
    230285
    231286?>
Note: See TracChangeset for help on using the changeset viewer.