3v4l.org

run code in 500+ PHP versions simultaneously
<?php error_reporting(E_ALL); $db = new PDO("sqlite::memory:"); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $expectedFetchMode = \PDO::FETCH_OBJ; $db->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, $expectedFetchMode); print "Original (expected):\n"; $stmt = $db->query("SELECT 'v1' AS c1, 'v2' AS c2"); print_r($stmt->fetch()); print "\nPDOStatement::setFetchMode:\n"; $stmt = $db->query("SELECT 'v1' AS c1, 'v2' AS c2"); $stmt->setFetchMode(\PDO::FETCH_DEFAULT); print_r($stmt->fetch()); print "\nPDOStatement::fetch:\n"; $stmt = $db->query("SELECT 'v1' AS c1, 'v2' AS c2"); print_r($stmt->fetch(\PDO::FETCH_DEFAULT)); print "\nPDOStatement::fetchAll:\n"; $stmt = $db->query("SELECT 'v1' AS c1, 'v2' AS c2"); print_r($stmt->fetchAll(\PDO::FETCH_DEFAULT)); print "\nPDO::setAttribute:\n"; try { $db->setAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE, \PDO::FETCH_DEFAULT); } catch (ValueError $e) { print "Could not set fetch mode using PDO::setAttribute: ". $e->getMessage() ."\n"; } if ($db->getAttribute(\PDO::ATTR_DEFAULT_FETCH_MODE) !== $expectedFetchMode) { print __LINE__ ." Fetch mode changed\n"; } print "Done!\n";
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 73
Branch analysis from position: 73
2 jumps found. (Code = 43) Position 1 = 78, Position 2 = 79
Branch analysis from position: 78
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 79
Found catch point at position: 67
Branch analysis from position: 67
2 jumps found. (Code = 107) Position 1 = 68, Position 2 = -2
Branch analysis from position: 68
2 jumps found. (Code = 43) Position 1 = 78, Position 2 = 79
Branch analysis from position: 78
Branch analysis from position: 79
filename:       /in/1sLR3H
function name:  (null)
number of ops:  81
compiled vars:  !0 = $db, !1 = $expectedFetchMode, !2 = $stmt, !3 = $e
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    2     0  E >   INIT_FCALL                                                   'error_reporting'
          1        SEND_VAL                                                     30719
          2        DO_ICALL                                                     
    3     3        NEW                                                  $5      'PDO'
          4        SEND_VAL_EX                                                  'sqlite%3A%3Amemory%3A'
          5        DO_FCALL                                          0          
          6        ASSIGN                                                       !0, $5
    4     7        INIT_METHOD_CALL                                             !0, 'setAttribute'
          8        SEND_VAL_EX                                                  3
          9        SEND_VAL_EX                                                  2
         10        DO_FCALL                                          0          
    6    11        ASSIGN                                                       !1, 5
    7    12        INIT_METHOD_CALL                                             !0, 'setAttribute'
         13        SEND_VAL_EX                                                  19
         14        SEND_VAR_EX                                                  !1
         15        DO_FCALL                                          0          
    9    16        ECHO                                                         'Original+%28expected%29%3A%0A'
   10    17        INIT_METHOD_CALL                                             !0, 'query'
         18        SEND_VAL_EX                                                  'SELECT+%27v1%27+AS+c1%2C+%27v2%27+AS+c2'
         19        DO_FCALL                                          0  $11     
         20        ASSIGN                                                       !2, $11
   11    21        INIT_FCALL                                                   'print_r'
         22        INIT_METHOD_CALL                                             !2, 'fetch'
         23        DO_FCALL                                          0  $13     
         24        SEND_VAR                                                     $13
         25        DO_ICALL                                                     
   13    26        ECHO                                                         '%0APDOStatement%3A%3AsetFetchMode%3A%0A'
   14    27        INIT_METHOD_CALL                                             !0, 'query'
         28        SEND_VAL_EX                                                  'SELECT+%27v1%27+AS+c1%2C+%27v2%27+AS+c2'
         29        DO_FCALL                                          0  $15     
         30        ASSIGN                                                       !2, $15
   15    31        INIT_METHOD_CALL                                             !2, 'setFetchMode'
         32        SEND_VAL_EX                                                  0
         33        DO_FCALL                                          0          
   16    34        INIT_FCALL                                                   'print_r'
         35        INIT_METHOD_CALL                                             !2, 'fetch'
         36        DO_FCALL                                          0  $18     
         37        SEND_VAR                                                     $18
         38        DO_ICALL                                                     
   18    39        ECHO                                                         '%0APDOStatement%3A%3Afetch%3A%0A'
   19    40        INIT_METHOD_CALL                                             !0, 'query'
         41        SEND_VAL_EX                                                  'SELECT+%27v1%27+AS+c1%2C+%27v2%27+AS+c2'
         42        DO_FCALL                                          0  $20     
         43        ASSIGN                                                       !2, $20
   20    44        INIT_FCALL                                                   'print_r'
         45        INIT_METHOD_CALL                                             !2, 'fetch'
         46        SEND_VAL_EX                                                  0
         47        DO_FCALL                                          0  $22     
         48        SEND_VAR                                                     $22
         49        DO_ICALL                                                     
   22    50        ECHO                                                         '%0APDOStatement%3A%3AfetchAll%3A%0A'
   23    51        INIT_METHOD_CALL                                             !0, 'query'
         52        SEND_VAL_EX                                                  'SELECT+%27v1%27+AS+c1%2C+%27v2%27+AS+c2'
         53        DO_FCALL                                          0  $24     
         54        ASSIGN                                                       !2, $24
   24    55        INIT_FCALL                                                   'print_r'
         56        INIT_METHOD_CALL                                             !2, 'fetchAll'
         57        SEND_VAL_EX                                                  0
         58        DO_FCALL                                          0  $26     
         59        SEND_VAR                                                     $26
         60        DO_ICALL                                                     
   26    61        ECHO                                                         '%0APDO%3A%3AsetAttribute%3A%0A'
   28    62        INIT_METHOD_CALL                                             !0, 'setAttribute'
         63        SEND_VAL_EX                                                  19
         64        SEND_VAL_EX                                                  0
         65        DO_FCALL                                          0          
         66      > JMP                                                          ->73
   29    67  E > > CATCH                                           last         'ValueError'
   30    68    >   INIT_METHOD_CALL                                             !3, 'getMessage'
         69        DO_FCALL                                          0  $29     
         70        CONCAT                                               ~30     'Could+not+set+fetch+mode+using+PDO%3A%3AsetAttribute%3A+', $29
         71        CONCAT                                               ~31     ~30, '%0A'
         72        ECHO                                                         ~31
   33    73    >   INIT_METHOD_CALL                                             !0, 'getAttribute'
         74        SEND_VAL_EX                                                  19
         75        DO_FCALL                                          0  $32     
         76        IS_NOT_IDENTICAL                                             !1, $32
         77      > JMPZ                                                         ~33, ->79
   34    78    >   ECHO                                                         '34+Fetch+mode+changed%0A'
   37    79    >   ECHO                                                         'Done%21%0A'
         80      > RETURN                                                       1

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
156.93 ms | 1208 KiB | 15 Q