Changeset 1343 in svn for trunk


Ignore:
Timestamp:
2013-08-12T09:25:57Z (2 years ago)
Author:
Xuefer
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.