Changeset 1318 for trunk


Ignore:
Timestamp:
2013-07-15T11:32:39+02:00 (14 months ago)
Author:
moo
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.