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.