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


Ignore:
Timestamp:
2013-07-15T11:32:39+02:00 (2 years ago)
Author:
Xuefer
Message:

Decompiler: update static member support for PHP 5.0

File:
1 edited

Legend:

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

    r1317 r1318  
    25262526        // }}}
    25272527        // {{{ properties
    2528         $default_static_members = $class[ZEND_ENGINE_2_1 ? 'default_static_members' : 'static_members'];
     2528        if (!ZEND_ENGINE_2_4) {
     2529            $default_static_members = $class[ZEND_ENGINE_2_1 ? 'default_static_members' : 'static_members'];
     2530        }
    25292531        $member_variables = $class['properties_info'];
    25302532        if ($member_variables) {
    25312533            echo "\n";
    2532             foreach ($member_variables as $name => $dummy) {
    2533                 $info = isset($class['properties_info'][$name]) ? $class['properties_info'][$name] : null;
    2534                 if (isset($info)) {
    2535                     if (!empty($info['doc_comment'])) {
    2536                         echo $newindent;
    2537                         echo $info['doc_comment'];
    2538                         echo "\n";
    2539                     }
     2534            foreach ($member_variables as $name => $info) {
     2535                if (!empty($info['doc_comment'])) {
     2536                    echo $newindent;
     2537                    echo $info['doc_comment'];
     2538                    echo "\n";
    25402539                }
    25412540
    25422541                echo $newindent;
    2543                 $static = false;
    2544                 if (isset($info)) {
    2545                     if ($info['flags'] & ZEND_ACC_STATIC) {
    2546                         $static = true;
    2547                     }
    2548                 }
    2549                 else if (isset($default_static_members[$name])) {
    2550                     $static = true;
    2551                 }
     2542                $static = ($info['flags'] & ZEND_ACC_STATIC);
    25522543
    25532544                if ($static) {
     
    25552546                }
    25562547
    2557                 $mangled = false;
     2548                $mangleSuffix = '';
    25582549                if (!isset($info)) {
    25592550                    echo 'public ';
     
    25692560                    case ZEND_ACC_PRIVATE:
    25702561                        echo "private ";
    2571                         $mangled = true;
     2562                        $mangleSuffix = "\000";
    25722563                        break;
    25732564                    case ZEND_ACC_PROTECTED:
    25742565                        echo "protected ";
    2575                         $mangled = true;
     2566                        $mangleSuffix = "\000";
    25762567                        break;
    25772568                    }
     
    25802571                echo '$', $name;
    25812572
    2582                 if (isset($info['offset'])) {
     2573                if (ZEND_ENGINE_2_4) {
    25832574                    $value = $class[$static ? 'default_static_members_table' : 'default_properties_table'][$info['offset']];
    25842575                }
    25852576                else {
    2586                     $key = isset($info) ? $info['name'] . ($mangled ? "\000" : "") : $name;
    2587 
     2577                    $key = $info['name'] . $mangleSuffix;
    25882578                    if ($static) {
    25892579                        $value = $default_static_members[$key];
Note: See TracChangeset for help on using the changeset viewer.