Changeset 1343


Ignore:
Timestamp:
2013-08-12T11:25:57+02:00 (15 months ago)
Author:
moo
Message:

Decompiler: support for const in static array index; TODO: PHP 5.0- support for static array

Location:
trunk
Files:
2 edited

Legend:

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

    r1342 r1343  
    280280            if (ZEND_ENGINE_2_3) { 
    281281                // closure local variable? 
    282                 return str($this->src); 
     282                return 'STR' . str($this->src); 
     283            } 
     284            else { 
     285                $EX = array(); 
     286                return str(value($this->src, $EX)); 
    283287            } 
    284288            die('static fetch cant to string'); 
     
    492496        $elements = array(); 
    493497        foreach ($array as $key => $value) { 
    494             $elements[] = array(value($key, $EX), value($value, $EX)); 
     498            if ((xcache_get_type($value) & IS_CONSTANT_INDEX)) { 
     499                $keyCode = $GLOBALS['__xcache_decompiler']->stripNamespace( 
     500                        ZEND_ENGINE_2_3 
     501                        ? substr($key, 0, -2) 
     502                        : $key 
     503                        ); 
     504            } 
     505            else { 
     506                $keyCode = value($key, $EX); 
     507            } 
     508            $elements[] = array($keyCode, value($value, $EX)); 
    495509        } 
    496510        $this->value = $elements; 
  • trunk/mod_disassembler/sample.cpp.php

    r1340 r1343  
    2727    /** doc */ 
    2828    static public $static = array( 
    29         array('array'), 
    30         'str' 
     29        0           => array('array'), 
     30        1           => 'str', 
     31        CONST_VALUE => CONST_VALUE 
    3132        ); 
    3233    /** doc */ 
     
    5960    PublicMethod function __construct($a, $b) 
    6061    { 
     62        static $array = array( 
     63            0           => array('array'), 
     64            1           => 'str', 
     65            CONST_VALUE => CONST_VALUE 
     66            ); 
     67        static $a = 1; 
     68        static $str = 'string'; 
    6169        echo CONST_VALUE; 
    6270#if PHP_VERSION >= 500 
Note: See TracChangeset for help on using the changeset viewer.