Ignore:
Timestamp:
2011-04-08T20:27:55+02:00 (4 years ago)
Author:
moo
Message:

disassembler: refix previous partial

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Decompiler.class.php

    r522 r713  
    2929    if (is_array($src)) { 
    3030        die_error('array str'); 
    31         $src = new Decompiler_Array($src, false, $indent); 
     31        $src = new Decompiler_Array($src, $indent); 
    3232        return $src->__toString(); 
    3333    } 
     
    3838            die_error('no __toString'); 
    3939        } 
    40         return $src->__toString($indent); 
     40        return $src->__toString(); 
    4141    } 
    4242 
     
    5656 
    5757    if (is_array($value)) { 
    58         $value = new Decompiler_Array($value, true); 
     58        $value = new Decompiler_Array($value); 
    5959    } 
    6060    else { 
    61         $value = new Decompiler_Value($value, true); 
     61        $value = new Decompiler_Value($value); 
    6262    } 
    6363    return $value; 
     
    257257class Decompiler_Array extends Decompiler_Value // {{{ 
    258258{ 
    259     var $needExport = false; 
    260259    var $indent = ''; 
    261260 
    262     function Decompiler_Array($value = array(), $needexport = false, $indent = '') 
     261    function Decompiler_Array($value = array(), $indent = '') 
    263262    { 
    264263        $this->value = $value; 
    265         $this->needExport = $needexport; 
    266264        $this->indent = $indent; 
    267265    } 
     
    286284            ++ $i; 
    287285        } 
    288         if ($assoclen && $this->needExport) { 
     286        if ($assoclen) { 
    289287            $assoclen += 2; 
    290288        } 
     
    306304            } 
    307305 
    308             if ($this->needExport) { 
    309                 $k = var_export($k, true); 
    310             } 
     306            $k = var_export($k, true); 
    311307            if ($multiline) { 
    312308                $exp .= sprintf("%{$assoclen}s => ", $k); 
     
    316312            } 
    317313 
    318             if (is_array($v)) { 
    319                 $v = new Decompiler_Array($v, $this->needExport); 
    320             } 
    321             $exp .= str($v, $subindent); 
     314            $exp .= str(value($v), $subindent); 
    322315 
    323316            $i ++; 
     
    16081601        if (!empty($class['default_properties'])) { 
    16091602            echo "\n"; 
    1610             $infos = empty($class['properties_info']) ? null : $class['properties_info']; 
    1611             foreach ($class['default_properties'] as $name => $v) { 
     1603            $infos = !empty($class['properties_info']) ? $class['properties_info'] : null; 
     1604            foreach (!empty($class['properties_info']) ? $class['properties_info'] : ($class['default_static_members'] + $class['default_properties']) as $name => $dummy) { 
    16121605                $info = (isset($infos) && isset($infos[$name])) ? $infos[$name] : null; 
    16131606                if (isset($info)) { 
     
    16201613 
    16211614                echo $newindent; 
     1615                $static = false; 
     1616                if (isset($info)) { 
     1617                    if ($info['flags'] & ZEND_ACC_STATIC) { 
     1618                        $static = true; 
     1619                    } 
     1620                } 
     1621                else if (isset($class['default_static_members'][$name])) { 
     1622                    $static = true; 
     1623                } 
     1624 
     1625                if ($static) { 
     1626                    echo "static "; 
     1627                } 
     1628 
     1629                $mangled = false; 
    16221630                if (PHP_VERSION < 5) { 
    16231631                    echo 'var '; 
     
    16361644                    case ZEND_ACC_PRIVATE: 
    16371645                        echo "private "; 
     1646                        $mangled = true; 
    16381647                        break; 
    16391648                    case ZEND_ACC_PROTECTED: 
    16401649                        echo "protected "; 
     1650                        $mangled = true; 
    16411651                        break; 
    16421652                    } 
    1643                     if ($info['flags'] & ZEND_ACC_STATIC) { 
    1644                         echo "static "; 
    1645                     } 
    16461653                } 
    16471654 
    16481655                echo '$', $name; 
    1649                 if (isset($v)) { 
     1656 
     1657                $key = isset($info) ? $info['name'] . ($mangled ? "\000" : "") : $name; 
     1658 
     1659                $value = $class[$static ? 'default_static_members' : 'default_properties'][$key]; 
     1660                if (isset($value)) { 
    16501661                    echo ' = '; 
    1651                     echo str(value($v)); 
     1662                    echo str(value($value)); 
    16521663                } 
    16531664                echo ";\n"; 
Note: See TracChangeset for help on using the changeset viewer.