Opcode
PHP Manual

FETCH_OBJ_FUNC_ARG

PHP 代码

<?php
/*
 * 
 * Opcode 编号: 94
 */
include './classA.php';

function 
foo(&$x)
{
  print(
$x);
}

$z "foo";

$obj = new A();
print 
$obj->num;
$z($obj->num);

?>

PHP Opcode

函数名: (null)

编译后的变量: !0=$z, !1=$obj

行号#操作 读取扩展返回 操作数
60 INCLUDE_OR_EVAL     '.%2FclassA.php',INCLUDE
81 NOP      
132 ASSIGN     !0,'foo'
153 ZEND_FETCH_CLASS   :2 'A'
 4 NEW   $3 :2
 5 DO_FCALL_BY_NAME  0   
 6 ASSIGN     !1,$3
167 FETCH_OBJ_R   $6 !1,'num'
 8 PRINT   ~7 $6
 9 FREE     ~7
1710 INIT_FCALL_BY_NAME     !0
 11 FETCH_OBJ_FUNC_ARG   $8 !1,'num'
 12 SEND_VAR     $8
 13 DO_FCALL_BY_NAME  1   
1914 RETURN     1

函数名: foo

编译后的变量: !0=$x

行号#操作 读取扩展返回 操作数
80 RECV     1
101 PRINT   ~0 !0
 2 FREE     ~0
113 RETURN     null

函数名: foo

编译后的变量: !0=$x

行号#操作 读取扩展返回 操作数
80 RECV     1
101 PRINT   ~0 !0
 2 FREE     ~0
113 RETURN     null

Opcode
PHP Manual