Changeset 1315 for trunk


Ignore:
Timestamp:
2013-07-15T06:07:26+02:00 (17 months ago)
Author:
moo
Message:

Decompiler: fix PHP 5.0 static member

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/Decompiler.class.php

    r1314 r1315  
    862862        } 
    863863        // }}} 
    864         // {{{ goto (TODO: recognize XC_BRK) 
     864        // {{{ goto (TODO: recognize BRK which is translated to JMP by optimizer) 
    865865        if ($firstOp['opcode'] == XC_JMP && !empty($firstOp['jmpouts']) && $firstOp['jmpouts'][0] == $range[1] + 1) { 
    866866            $this->removeJmpInfo($EX, $range[0]); 
     
    25032503        // }}} 
    25042504        $newindent = INDENT . $indent; 
    2505         // {{{ const, static 
    2506         foreach (array('constants_table' => 'const ' 
    2507                     , 'static_members' => 'static $') as $type => $prefix) { 
    2508             if (!empty($class[$type])) { 
    2509                 echo "\n"; 
    2510                 // TODO: skip shadow? 
    2511                 foreach ($class[$type] as $name => $v) { 
    2512                     echo $newindent; 
    2513                     echo $prefix, $name, ' = '; 
    2514                     echo str(value($v, $EX), $newindent); 
    2515                     echo ";\n"; 
    2516                 } 
     2505        // {{{ const 
     2506        if (!empty($class['constants_table'])) { 
     2507            echo "\n"; 
     2508            foreach ($class['constants_table'] as $name => $v) { 
     2509                echo $newindent; 
     2510                echo 'const ', $name, ' = '; 
     2511                echo str(value($v, $EX), $newindent); 
     2512                echo ";\n"; 
    25172513            } 
    25182514        } 
    25192515        // }}} 
    25202516        // {{{ properties 
    2521         $member_variables = isset($class['properties_info']) ? $class['properties_info'] : ($class['default_static_members'] + $class['default_properties']); 
     2517        $default_static_members = $class[ZEND_ENGINE_2_1 ? 'default_static_members' : 'static_members']; 
     2518        $member_variables = $class['properties_info']; 
    25222519        if ($member_variables) { 
    25232520            echo "\n"; 
    2524             $infos = !empty($class['properties_info']) ? $class['properties_info'] : null; 
    25252521            foreach ($member_variables as $name => $dummy) { 
    2526                 $info = (isset($infos) && isset($infos[$name])) ? $infos[$name] : null; 
     2522                $info = isset($class['properties_info'][$name]) ? $class['properties_info'][$name] : null; 
    25272523                if (isset($info)) { 
    25282524                    if (!empty($info['doc_comment'])) { 
     
    25402536                    } 
    25412537                } 
    2542                 else if (isset($class['default_static_members'][$name])) { 
     2538                else if (isset($default_static_members[$name])) { 
    25432539                    $static = true; 
    25442540                } 
     
    25792575                    $key = isset($info) ? $info['name'] . ($mangled ? "\000" : "") : $name; 
    25802576 
    2581                     $value = $class[$static ? 'default_static_members' : 'default_properties'][$key]; 
     2577                    if ($static) { 
     2578                        $value = $default_static_members[$key]; 
     2579                    } 
     2580                    else { 
     2581                        $value = $class['default_properties'][$key]; 
     2582                    } 
    25822583                } 
    25832584                if (isset($value)) { 
Note: See TracChangeset for help on using the changeset viewer.