3v4l.org

run code in 300+ PHP versions simultaneously
<?php $null = null; // Fatal error: var_export($null->someMethod() ?? null); //echo "\n---\n"; // Fatal error: var_export($null->someMethod()->city ?? null); //echo "\n---\n"; // Fatal error: var_export($null->someMethod()?->city ?? null); //echo "\n---\n"; var_export($null?->someMethod() ?? "null coalesced"); // ^-- null-safe operator required before method call echo "\n---\n"; var_export($null?->property?->someMethod() ?? "null coalesced"); // ^----------^-- null-safe operators required before method call echo "\n---\n"; var_export($null->property->anotherProperty ?? "null coalesced"); // ^---------^-- NO METHODS CALLED, SO NO NULL-SAFE OPERATORS REQUIRED echo "\n---\n"; var_export($null?->property?->someMethod()->anotherProperty ?? "null coalesced"); // ^ ^ ^-- NO NULL-SAFE OPERATORS REQUIRED IF NO SUBSEQUENT METHODS CALLED // |----------|-- nulls-safe operators required before method call
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/iToO8
function name:  (null)
number of ops:  41
compiled vars:  !0 = $null
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   ASSIGN                                                   !0, null
   17     1        INIT_FCALL                                               'var_export'
          2        JMP_NULL                                         $2      !0
          3        INIT_METHOD_CALL                                         !0, 'someMethod'
          4        DO_FCALL                                      0  $2      
          5        COALESCE                                         ~3      $2
          6        QM_ASSIGN                                        ~3      'null+coalesced'
          7        SEND_VAL                                                 ~3
          8        DO_ICALL                                                 
   19     9        ECHO                                                     '%0A---%0A'
   21    10        INIT_FCALL                                               'var_export'
         11        JMP_NULL                                         $6      !0
         12        FETCH_OBJ_R                                      ~5      !0, 'property'
         13        JMP_NULL                                         $6      ~5
         14        INIT_METHOD_CALL                                         ~5, 'someMethod'
         15        DO_FCALL                                      0  $6      
         16        COALESCE                                         ~7      $6
         17        QM_ASSIGN                                        ~7      'null+coalesced'
         18        SEND_VAL                                                 ~7
         19        DO_ICALL                                                 
   23    20        ECHO                                                     '%0A---%0A'
   25    21        INIT_FCALL                                               'var_export'
         22        FETCH_OBJ_IS                                     ~9      !0, 'property'
         23        FETCH_OBJ_IS                                     ~10     ~9, 'anotherProperty'
         24        COALESCE                                         ~11     ~10
         25        QM_ASSIGN                                        ~11     'null+coalesced'
         26        SEND_VAL                                                 ~11
         27        DO_ICALL                                                 
   27    28        ECHO                                                     '%0A---%0A'
   29    29        INIT_FCALL                                               'var_export'
         30        JMP_NULL                                         ~15     !0
         31        FETCH_OBJ_R                                      ~13     !0, 'property'
         32        JMP_NULL                                         ~15     ~13
         33        INIT_METHOD_CALL                                         ~13, 'someMethod'
         34        DO_FCALL                                      0  $14     
         35        FETCH_OBJ_IS                                     ~15     $14, 'anotherProperty'
         36        COALESCE                                         ~16     ~15
         37        QM_ASSIGN                                        ~16     'null+coalesced'
         38        SEND_VAL                                                 ~16
         39        DO_ICALL                                                 
   31    40      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
141.02 ms | 1006 KiB | 14 Q