Changeset 1315 in svn for trunk/lib/Decompiler.class.php


Ignore:
Timestamp:
2013-07-15T06:07:26+02:00 (23 months ago)
Author:
Xuefer
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.