DECLARE_INHERITED_CLASS

PHP code

<?php
/*
 * 
 * opcode number: 140
 */
 
if($b){
 class 
Foo {
  public static 
$my_static 'foo';
  public function 
staticValue() {
    return 
self::$my_static;
  }
 }

 class 
Bar extends Foo {
  public function 
fooStatic() {
     echo 
parent::$my_static;
  }
 }
}
?>

PHP opcodes

Function name: (null)

Compiled variables: !0=$b

line # op fetch ext return operands
6 0 JMPZ       !0,->5
7 1 ZEND_DECLARE_CLASS     $0 '%00foo%2Fmnt%2Fworkspace%2Fws_phpscripts%2FPHPopcodes%2Fphpsamples%2FDECLARE_INHERITED_CLASS.php0xb7be503b','foo'
14 2 ZEND_FETCH_CLASS     :1 'Foo'
  3 ZEND_DECLARE_INHERITED_CLASS     $2 '%00bar%2Fmnt%2Fworkspace%2Fws_phpscripts%2FPHPopcodes%2Fphpsamples%2FDECLARE_INHERITED_CLASS.php0xb7be50bc','bar'
19 4 JMP       ->5
20 5 RETURN       1

Function name: staticValue

Compiled variables: !0=$my_static

line # op fetch ext return operands
10 0 ZEND_FETCH_CLASS        
  1 FETCH_R staticmember   $1 'my_static'
  2 RETURN       $1
11 3 RETURN       null

Function name: fooStatic

Compiled variables: !0=$my_static

line # op fetch ext return operands
16 0 ZEND_FETCH_CLASS     :0  
  1 FETCH_R staticmember   $1 'my_static'
  2 ECHO       $1
17 3 RETURN       null
关注编程学问公众号