internals2-php-opcodes-php-fetch-obj-func-arg-5

  • Opcode Descriptions and
    Examples
  • FETCH_OBJ_FUNC_ARG

  • FETCH_OBJ_FUNC_ARG
  • FETCH_OBJ_FUNC_ARG

    FETCH_OBJ_FUNC_ARG

    PHP code

    <?php
    /*
     * 
     * opcode number: 94
     */
    include './classA.php';

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

    $z "foo";

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

    ?>

    PHP opcodes

    Function name: (null)

    Compiled variables: !0=$z, !1=$obj

    line # op fetch ext return operands
    6 0 INCLUDE_OR_EVAL       ‘.%2FclassA.php’,INCLUDE
    8 1 NOP        
    13 2 ASSIGN       !0,’foo’
    15 3 ZEND_FETCH_CLASS     :2 ‘A’
      4 NEW     $3 :2
      5 DO_FCALL_BY_NAME   0    
      6 ASSIGN       !1,$3
    16 7 FETCH_OBJ_R     $6 !1,’num’
      8 PRINT     ~7 $6
      9 FREE       ~7
    17 10 INIT_FCALL_BY_NAME       !0
      11 FETCH_OBJ_FUNC_ARG     $8 !1,’num’
      12 SEND_VAR       $8
      13 DO_FCALL_BY_NAME   1    
    19 14 RETURN       1

    Function name: foo

    Compiled variables: !0=$x

    line # op fetch ext return operands
    8 0 RECV       1
    10 1 PRINT     ~0 !0
      2 FREE       ~0
    11 3 RETURN       null

    Function name: foo

    Compiled variables: !0=$x

    line # op fetch ext return operands
    8 0 RECV       1
    10 1 PRINT     ~0 !0
      2 FREE       ~0
    11 3 RETURN       null