3v4l.org

run code in 500+ PHP versions simultaneously
<?php $code = 'return $arg;'; echo "Test 1: "; $fn = create_function('$arg', $code); echo $fn('foo'); echo "\n\n"; echo "Test 2: "; $fn = function($arg) use($code) { eval($code); }; echo $fn('bar'); echo "\n\n"; echo "Test 3: "; $fn = function($arg) use($code) { return eval($code); }; echo $fn('baz');
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/689VZ
function name:  (null)
number of ops:  30
compiled vars:  !0 = $code, !1 = $fn
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                       !0, 'return+%24arg%3B'
    5     1        ECHO                                                         'Test+1%3A+'
    6     2        INIT_FCALL_BY_NAME                                           'create_function'
          3        SEND_VAL_EX                                                  '%24arg'
          4        SEND_VAR_EX                                                  !0
          5        DO_FCALL                                          0  $3      
          6        ASSIGN                                                       !1, $3
    7     7        INIT_DYNAMIC_CALL                                            !1
          8        SEND_VAL_EX                                                  'foo'
          9        DO_FCALL                                          0  $5      
         10        ECHO                                                         $5
    9    11        ECHO                                                         '%0A%0A'
   11    12        ECHO                                                         'Test+2%3A+'
   12    13        DECLARE_LAMBDA_FUNCTION                              ~6      [0]
         14        BIND_LEXICAL                                                 ~6, !0
         15        ASSIGN                                                       !1, ~6
   15    16        INIT_DYNAMIC_CALL                                            !1
         17        SEND_VAL_EX                                                  'bar'
         18        DO_FCALL                                          0  $8      
         19        ECHO                                                         $8
   17    20        ECHO                                                         '%0A%0A'
   19    21        ECHO                                                         'Test+3%3A+'
   20    22        DECLARE_LAMBDA_FUNCTION                              ~9      [1]
         23        BIND_LEXICAL                                                 ~9, !0
         24        ASSIGN                                                       !1, ~9
   23    25        INIT_DYNAMIC_CALL                                            !1
         26        SEND_VAL_EX                                                  'baz'
         27        DO_FCALL                                          0  $11     
         28        ECHO                                                         $11
         29      > RETURN                                                       1


Dynamic Functions:
Dynamic Function 0
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/689VZ
function name:  {closure:/in/689VZ:12}
number of ops:  4
compiled vars:  !0 = $arg, !1 = $code
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   12     0  E >   RECV                                                 !0      
          1        BIND_STATIC                                                  !1
   13     2        INCLUDE_OR_EVAL                                              !1, EVAL
   14     3      > RETURN                                                       null

End of Dynamic Function 0

Dynamic Function 1
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/689VZ
function name:  {closure:/in/689VZ:20}
number of ops:  5
compiled vars:  !0 = $arg, !1 = $code
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
   20     0  E >   RECV                                                 !0      
          1        BIND_STATIC                                                  !1
   21     2        INCLUDE_OR_EVAL                                      $2      !1, EVAL
          3      > RETURN                                                       $2
   22     4*     > RETURN                                                       null

End of Dynamic Function 1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
195.5 ms | 2617 KiB | 13 Q