3v4l.org

run code in 500+ PHP versions simultaneously
<?php class CantUnserializeThis extends ArrayObject { } $className = 'CantUnserializeThis'; $reflection = new ReflectionClass($className); $serialized = serialize(new ArrayObject()); $chunks = explode(':', $serialized); $serializedValuesChunks = implode(':', array_slice($chunks, 3)); var_dump(unserialize(sprintf( 'C:%d:"%s":%s', strlen($className), $className, $serializedValuesChunks ))); var_dump(unserialize(sprintf( 'O:%d:"%s":%s', strlen($className), $className, $serializedValuesChunks ))); var_dump($reflection->newInstanceWithoutConstructor());
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/oSPvF
function name:  (null)
number of ops:  56
compiled vars:  !0 = $className, !1 = $reflection, !2 = $serialized, !3 = $chunks, !4 = $serializedValuesChunks
line      #* E I O op                               fetch          ext  return  operands
-----------------------------------------------------------------------------------------
    7     0  E >   ASSIGN                                                       !0, 'CantUnserializeThis'
    8     1        NEW                                                  $6      'ReflectionClass'
          2        SEND_VAR_EX                                                  !0
          3        DO_FCALL                                          0          
          4        ASSIGN                                                       !1, $6
    9     5        INIT_FCALL                                                   'serialize'
          6        NEW                                                  $9      'ArrayObject'
          7        DO_FCALL                                          0          
          8        SEND_VAR                                                     $9
          9        DO_ICALL                                             $11     
         10        ASSIGN                                                       !2, $11
   10    11        INIT_FCALL                                                   'explode'
         12        SEND_VAL                                                     '%3A'
         13        SEND_VAR                                                     !2
         14        DO_ICALL                                             $13     
         15        ASSIGN                                                       !3, $13
   11    16        INIT_FCALL                                                   'array_slice'
         17        SEND_VAR                                                     !3
         18        SEND_VAL                                                     3
         19        DO_ICALL                                             $15     
         20        FRAMELESS_ICALL_2                implode             ~16     '%3A', $15
         21        ASSIGN                                                       !4, ~16
   13    22        INIT_FCALL                                                   'var_dump'
         23        INIT_FCALL                                                   'unserialize'
   15    24        STRLEN                                               ~18     !0
   17    25        ROPE_INIT                                         6  ~21     'C%3A'
         26        CAST                                              4  ~19     ~18
         27        ROPE_ADD                                          1  ~21     ~21, ~19
         28        ROPE_ADD                                          2  ~21     ~21, '%3A%22'
         29        ROPE_ADD                                          3  ~21     ~21, !0
         30        ROPE_ADD                                          4  ~21     ~21, '%22%3A'
         31        ROPE_END                                          5  ~20     ~21, !4
         32        SEND_VAL                                                     ~20
   13    33        DO_ICALL                                             $24     
   17    34        SEND_VAR                                                     $24
   13    35        DO_ICALL                                                     
   20    36        INIT_FCALL                                                   'var_dump'
         37        INIT_FCALL                                                   'unserialize'
   22    38        STRLEN                                               ~26     !0
   24    39        ROPE_INIT                                         6  ~29     'O%3A'
         40        CAST                                              4  ~27     ~26
         41        ROPE_ADD                                          1  ~29     ~29, ~27
         42        ROPE_ADD                                          2  ~29     ~29, '%3A%22'
         43        ROPE_ADD                                          3  ~29     ~29, !0
         44        ROPE_ADD                                          4  ~29     ~29, '%22%3A'
         45        ROPE_END                                          5  ~28     ~29, !4
         46        SEND_VAL                                                     ~28
   20    47        DO_ICALL                                             $32     
   24    48        SEND_VAR                                                     $32
   20    49        DO_ICALL                                                     
   27    50        INIT_FCALL                                                   'var_dump'
         51        INIT_METHOD_CALL                                             !1, 'newInstanceWithoutConstructor'
         52        DO_FCALL                                          0  $34     
         53        SEND_VAR                                                     $34
         54        DO_ICALL                                                     
         55      > RETURN                                                       1

Class CantUnserializeThis: [no user functions]

Generated using Vulcan Logic Dumper, using php 8.5.0


preferences:
165.37 ms | 3167 KiB | 18 Q