3v4l.org

run code in 300+ PHP versions simultaneously
<?php function my_callback( &$param ) {} $callback = 'my_callback'; $a = true; $b = array( $a ); $c = array( &$a ); //my_callback( true ); // Fatal error: passing a value when reference is expected. my_callback( $a ); // OK //$callback( true ); // Fatal error: passing a value when reference is expected. $callback( $a ); // OK call_user_func( $callback, true ); // Warning: Parameter 1 to my_callback() expected to be a reference, value given call_user_func( $callback, $a ); // Warning: Parameter 1 to my_callback() expected to be a reference, value given call_user_func( $callback, ...$b ); // Warning: Parameter 1 to my_callback() expected to be a reference, value given call_user_func( $callback, ...$c ); // Warning: Parameter 1 to my_callback() expected to be a reference, value given call_user_func_array( $callback, array( true ) ); // Warning: Parameter 1 to my_callback() expected to be a reference, value given call_user_func_array( $callback, array( $a ) ); // Warning: Parameter 1 to my_callback() expected to be a reference, value given call_user_func_array( $callback, $b ); // Warning: Parameter 1 to my_callback() expected to be a reference, value given call_user_func_array( $callback, array( &$a ) ); // OK call_user_func_array( $callback, $c ); // OK
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/4fEA9
function name:  (null)
number of ops:  51
compiled vars:  !0 = $callback, !1 = $a, !2 = $b, !3 = $c
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    5     0  E >   ASSIGN                                                   !0, 'my_callback'
    6     1        ASSIGN                                                   !1, <true>
    7     2        INIT_ARRAY                                       ~6      !1
          3        ASSIGN                                                   !2, ~6
    8     4        INIT_ARRAY                                       ~8      !1
          5        ASSIGN                                                   !3, ~8
   11     6        INIT_FCALL                                               'my_callback'
          7        SEND_REF                                                 !1
          8        DO_FCALL                                      0          
   14     9        INIT_DYNAMIC_CALL                                        !0
         10        SEND_VAR_EX                                              !1
         11        DO_FCALL                                      0          
   16    12        INIT_USER_CALL                                1          'call_user_func', !0
         13        SEND_USER                                                <true>
         14        DO_FCALL                                      0          
   17    15        INIT_USER_CALL                                1          'call_user_func', !0
         16        SEND_USER                                                !1
         17        DO_FCALL                                      0          
   18    18        INIT_FCALL                                               'call_user_func'
         19        SEND_VAR                                                 !0
         20        SEND_UNPACK                                              !2
         21        CHECK_UNDEF_ARGS                                         
         22        DO_ICALL                                                 
   19    23        INIT_FCALL                                               'call_user_func'
         24        SEND_VAR                                                 !0
         25        SEND_UNPACK                                              !3
         26        CHECK_UNDEF_ARGS                                         
         27        DO_ICALL                                                 
   21    28        INIT_USER_CALL                                0          'call_user_func_array', !0
         29        SEND_ARRAY                                               <array>
         30        CHECK_UNDEF_ARGS                                         
         31        DO_FCALL                                      0          
   22    32        INIT_USER_CALL                                0          'call_user_func_array', !0
         33        INIT_ARRAY                                       ~17     !1
         34        SEND_ARRAY                                               ~17
         35        CHECK_UNDEF_ARGS                                         
         36        DO_FCALL                                      0          
   23    37        INIT_USER_CALL                                0          'call_user_func_array', !0
         38        SEND_ARRAY                                               !2
         39        CHECK_UNDEF_ARGS                                         
         40        DO_FCALL                                      0          
   24    41        INIT_USER_CALL                                0          'call_user_func_array', !0
         42        INIT_ARRAY                                       ~20     !1
         43        SEND_ARRAY                                               ~20
         44        CHECK_UNDEF_ARGS                                         
         45        DO_FCALL                                      0          
   25    46        INIT_USER_CALL                                0          'call_user_func_array', !0
         47        SEND_ARRAY                                               !3
         48        CHECK_UNDEF_ARGS                                         
         49        DO_FCALL                                      0          
         50      > RETURN                                                   1

Function my_callback:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/4fEA9
function name:  my_callback
number of ops:  2
compiled vars:  !0 = $param
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
          1      > RETURN                                                   null

End of function my_callback

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
184.35 ms | 1403 KiB | 16 Q