- Timestamp:
- 2013-07-19T06:50:48Z (5 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/Decompiler.class.php
r1333 r1335 602 602 function stripNamespace($name) // {{{ 603 603 { 604 if (!isset($name)) { 605 return $name; 606 } 607 604 608 $name = str($name); 605 609 $len = strlen($this->namespace) + 1; … … 1820 1824 case XC_INIT_METHOD_CALL: // {{{ 1821 1825 array_push($EX['arg_types_stack'], array($EX['fbc'], $EX['object'], $EX['called_scope'])); 1822 if ($opc == XC_INIT_STATIC_METHOD_CALL || $opc == XC_INIT_METHOD_CALL || $op1['op_type'] != XC_IS_UNUSED) { 1826 if ($opc == XC_INIT_STATIC_METHOD_CALL) { 1827 $EX['object'] = null; 1828 $EX['called_scope'] = $this->stripNamespace(isset($op1['constant']) ? $op1['constant'] : $this->getOpVal($op1, $EX)); 1829 } 1830 else { 1823 1831 $obj = $this->getOpVal($op1, $EX); 1824 1832 if (!isset($obj)) { 1825 1833 $obj = '$this'; 1826 1834 } 1827 if ($opc == XC_INIT_STATIC_METHOD_CALL || /* PHP4 */ isset($op1['constant'])) { 1828 $EX['object'] = null; 1829 $EX['called_scope'] = $this->stripNamespace(unquoteName($obj, $EX)); 1830 } 1831 else { 1832 $EX['object'] = $obj; 1833 $EX['called_scope'] = null; 1834 } 1835 if ($res['op_type'] != XC_IS_UNUSED) { 1836 $resvar = '$obj call$'; 1837 } 1838 } 1839 else { 1840 $EX['object'] = null; 1835 $EX['object'] = $obj; 1841 1836 $EX['called_scope'] = null; 1842 1837 } 1838 if ($res['op_type'] != XC_IS_UNUSED) { 1839 $resvar = '$obj call$'; 1840 } 1843 1841 1844 1842 $EX['fbc'] = isset($op2['constant']) ? $op2['constant'] : $this->getOpVal($op2, $EX); 1845 if ( ($opc == XC_INIT_STATIC_METHOD_CALL || $opc == XC_INIT_METHOD_CALL) &&!isset($EX['fbc'])) {1843 if (!isset($EX['fbc'])) { 1846 1844 $EX['fbc'] = '__construct'; 1847 1845 } … … 1854 1852 } 1855 1853 array_push($EX['arg_types_stack'], array($EX['fbc'], $EX['object'], $EX['called_scope'])); 1856 $EX['object'] = null; 1857 $EX['called_scope'] = null; 1858 $EX['fbc'] = $this->getOpVal($op2, $EX); 1854 if (!ZEND_ENGINE_2 && ($ext & ZEND_MEMBER_FUNC_CALL)) { 1855 if (isset($op1['constant'])) { 1856 $EX['object'] = null; 1857 $EX['called_scope'] = $this->stripNamespace($op1['constant']); 1858 } 1859 else { 1860 $EX['object'] = $this->getOpVal($op1, $EX); 1861 $EX['called_scope'] = null; 1862 } 1863 } 1864 else { 1865 $EX['object'] = null; 1866 $EX['called_scope'] = null; 1867 } 1868 $EX['fbc'] = isset($op2['constant']) ? $op2['constant'] : $this->getOpVal($op2, $EX); 1859 1869 break; 1860 1870 // }}} … … 1880 1890 $object = null; 1881 1891 1882 $fname = unquoteName($EX['fbc'], $EX);1883 1892 if (!is_int($EX['object'])) { 1884 1893 $object = $EX['object']; … … 1887 1896 $args = $this->popargs($EX, $ext); 1888 1897 1889 $prefix = (isset($object) ? $object. '->' : '' )1890 . (isset($EX['called_scope']) ? $EX['called_scope']. '::' : '' );1898 $prefix = (isset($object) ? str($object) . '->' : '' ) 1899 . (isset($EX['called_scope']) ? str($EX['called_scope']) . '::' : '' ); 1891 1900 $resvar = $prefix 1892 . (!$prefix ? $this->stripNamespace($ fname) : $fname)1901 . (!$prefix ? $this->stripNamespace($EX['fbc']) : str($EX['fbc'])) 1893 1902 . "($args)"; 1894 1903 unset($args); -
trunk/mod_disassembler/sample.cpp.php
r1334 r1335 1 1 <?php 2 2 #if PHP_VERSION >= 500 3 # define ClassClassName ClassName4 3 # define PublicMethod public 5 4 #else 6 # define Class ClassName classname5 # define ClassName classname 7 6 # define PublicMethod 8 7 # define abstract … … 21 20 #endif 22 21 23 abstract class Class ClassName22 abstract class ClassName 24 23 { 25 24 #if PHP_VERSION >= 500 … … 118 117 echo $GLOBALS['var']->indexProp; 119 118 ClassName::__construct(); 119 ClassName::$func(); 120 120 echo __CLASS__; 121 121 echo __METHOD__;
Note: See TracChangeset
for help on using the changeset viewer.