3v4l.org

run code in 300+ PHP versions simultaneously
<?php /** * The only reliable way of determining if a child exists * in SimpleXMLElement is to use count(). All other methods * do not work reliably in global or local NS. */ if(!class_exists('SimpleXMLElement')) die("Bonkers"); $xml = new SimpleXMLElement('<xml xmlns:abstract="urn:my.org:abstract"><abstract:node>foo</abstract:node><bar>123</bar></xml>'); var_dump($xml->node); var_dump(gettype($xml->node)); var_dump(isset($xml->node)); var_dump(empty($xml->node)); var_dump(is_null($xml->node)); var_dump(count($xml->node)); var_dump(count($xml->node->children())); echo "----------------------\n"; var_dump(gettype($xml->bar)); var_dump(isset($xml->bar)); var_dump(empty($xml->bar)); var_dump(is_null($xml->bar)); var_dump(count($xml->bar)); var_dump(count($xml->bar->children())); echo "----------------------\n"; var_dump(gettype($xml->children('abstract',true)->node)); var_dump(isset($xml->children('abstract',true)->node)); var_dump(empty($xml->children('abstract',true)->node)); var_dump(is_null($xml->children('abstract',true)->node)); var_dump(count($xml->children('abstract',true)->node)); var_dump(count($xml->children('abstract',true)->node->children())); echo "----------------------\n"; var_dump(gettype($xml->children('abstract',true)->bar)); var_dump(isset($xml->children('abstract',true)->bar)); var_dump(empty($xml->children('abstract',true)->bar)); var_dump(is_null($xml->children('abstract',true)->bar)); var_dump(count($xml->children('abstract',true)->bar)); var_dump(count($xml->children('abstract',true)->bar->children()));
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 5, Position 2 = 6
Branch analysis from position: 5
1 jumps found. (Code = 79) Position 1 = -2
Branch analysis from position: 6
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/GFCY2
function name:  (null)
number of ops:  186
compiled vars:  !0 = $xml
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    7     0  E >   INIT_FCALL                                               'class_exists'
          1        SEND_VAL                                                 'SimpleXMLElement'
          2        DO_ICALL                                         $1      
          3        BOOL_NOT                                         ~2      $1
          4      > JMPZ                                                     ~2, ->6
          5    > > EXIT                                                     'Bonkers'
    8     6    >   NEW                                              $3      'SimpleXMLElement'
          7        SEND_VAL_EX                                              '%3Cxml+xmlns%3Aabstract%3D%22urn%3Amy.org%3Aabstract%22%3E%3Cabstract%3Anode%3Efoo%3C%2Fabstract%3Anode%3E%3Cbar%3E123%3C%2Fbar%3E%3C%2Fxml%3E'
          8        DO_FCALL                                      0          
          9        ASSIGN                                                   !0, $3
    9    10        INIT_FCALL                                               'var_dump'
         11        FETCH_OBJ_R                                      ~6      !0, 'node'
         12        SEND_VAL                                                 ~6
         13        DO_ICALL                                                 
   11    14        INIT_FCALL                                               'var_dump'
         15        FETCH_OBJ_R                                      ~8      !0, 'node'
         16        GET_TYPE                                         ~9      ~8
         17        SEND_VAL                                                 ~9
         18        DO_ICALL                                                 
   12    19        INIT_FCALL                                               'var_dump'
         20        ISSET_ISEMPTY_PROP_OBJ                           ~11     !0, 'node'
         21        SEND_VAL                                                 ~11
         22        DO_ICALL                                                 
   13    23        INIT_FCALL                                               'var_dump'
         24        ISSET_ISEMPTY_PROP_OBJ                           ~13     !0, 'node'
         25        SEND_VAL                                                 ~13
         26        DO_ICALL                                                 
   14    27        INIT_FCALL                                               'var_dump'
         28        FETCH_OBJ_R                                      ~15     !0, 'node'
         29        TYPE_CHECK                                    2  ~16     ~15
         30        SEND_VAL                                                 ~16
         31        DO_ICALL                                                 
   15    32        INIT_FCALL                                               'var_dump'
         33        FETCH_OBJ_R                                      ~18     !0, 'node'
         34        COUNT                                            ~19     ~18
         35        SEND_VAL                                                 ~19
         36        DO_ICALL                                                 
   16    37        INIT_FCALL                                               'var_dump'
         38        FETCH_OBJ_R                                      ~21     !0, 'node'
         39        INIT_METHOD_CALL                                         ~21, 'children'
         40        DO_FCALL                                      0  $22     
         41        COUNT                                            ~23     $22
         42        SEND_VAL                                                 ~23
         43        DO_ICALL                                                 
   17    44        ECHO                                                     '----------------------%0A'
   18    45        INIT_FCALL                                               'var_dump'
         46        FETCH_OBJ_R                                      ~25     !0, 'bar'
         47        GET_TYPE                                         ~26     ~25
         48        SEND_VAL                                                 ~26
         49        DO_ICALL                                                 
   19    50        INIT_FCALL                                               'var_dump'
         51        ISSET_ISEMPTY_PROP_OBJ                           ~28     !0, 'bar'
         52        SEND_VAL                                                 ~28
         53        DO_ICALL                                                 
   20    54        INIT_FCALL                                               'var_dump'
         55        ISSET_ISEMPTY_PROP_OBJ                           ~30     !0, 'bar'
         56        SEND_VAL                                                 ~30
         57        DO_ICALL                                                 
   21    58        INIT_FCALL                                               'var_dump'
         59        FETCH_OBJ_R                                      ~32     !0, 'bar'
         60        TYPE_CHECK                                    2  ~33     ~32
         61        SEND_VAL                                                 ~33
         62        DO_ICALL                                                 
   22    63        INIT_FCALL                                               'var_dump'
         64        FETCH_OBJ_R                                      ~35     !0, 'bar'
         65        COUNT                                            ~36     ~35
         66        SEND_VAL                                                 ~36
         67        DO_ICALL                                                 
   23    68        INIT_FCALL                                               'var_dump'
         69        FETCH_OBJ_R                                      ~38     !0, 'bar'
         70        INIT_METHOD_CALL                                         ~38, 'children'
         71        DO_FCALL                                      0  $39     
         72        COUNT                                            ~40     $39
         73        SEND_VAL                                                 ~40
         74        DO_ICALL                                                 
   24    75        ECHO                                                     '----------------------%0A'
   25    76        INIT_FCALL                                               'var_dump'
         77        INIT_METHOD_CALL                                         !0, 'children'
         78        SEND_VAL_EX                                              'abstract'
         79        SEND_VAL_EX                                              <true>
         80        DO_FCALL                                      0  $42     
         81        FETCH_OBJ_R                                      ~43     $42, 'node'
         82        GET_TYPE                                         ~44     ~43
         83        SEND_VAL                                                 ~44
         84        DO_ICALL                                                 
   26    85        INIT_FCALL                                               'var_dump'
         86        INIT_METHOD_CALL                                         !0, 'children'
         87        SEND_VAL_EX                                              'abstract'
         88        SEND_VAL_EX                                              <true>
         89        DO_FCALL                                      0  $46     
         90        ISSET_ISEMPTY_PROP_OBJ                           ~47     $46, 'node'
         91        SEND_VAL                                                 ~47
         92        DO_ICALL                                                 
   27    93        INIT_FCALL                                               'var_dump'
         94        INIT_METHOD_CALL                                         !0, 'children'
         95        SEND_VAL_EX                                              'abstract'
         96        SEND_VAL_EX                                              <true>
         97        DO_FCALL                                      0  $49     
         98        ISSET_ISEMPTY_PROP_OBJ                           ~50     $49, 'node'
         99        SEND_VAL                                                 ~50
        100        DO_ICALL                                                 
   28   101        INIT_FCALL                                               'var_dump'
        102        INIT_METHOD_CALL                                         !0, 'children'
        103        SEND_VAL_EX                                              'abstract'
        104        SEND_VAL_EX                                              <true>
        105        DO_FCALL                                      0  $52     
        106        FETCH_OBJ_R                                      ~53     $52, 'node'
        107        TYPE_CHECK                                    2  ~54     ~53
        108        SEND_VAL                                                 ~54
        109        DO_ICALL                                                 
   29   110        INIT_FCALL                                               'var_dump'
        111        INIT_METHOD_CALL                                         !0, 'children'
        112        SEND_VAL_EX                                              'abstract'
        113        SEND_VAL_EX                                              <true>
        114        DO_FCALL                                      0  $56     
        115        FETCH_OBJ_R                                      ~57     $56, 'node'
        116        COUNT                                            ~58     ~57
        117        SEND_VAL                                                 ~58
        118        DO_ICALL                                                 
   30   119        INIT_FCALL                                               'var_dump'
        120        INIT_METHOD_CALL                                         !0, 'children'
        121        SEND_VAL_EX                                              'abstract'
        122        SEND_VAL_EX                                              <true>
        123        DO_FCALL                                      0  $60     
        124        FETCH_OBJ_R                                      ~61     $60, 'node'
        125        INIT_METHOD_CALL                                         ~61, 'children'
        126        DO_FCALL                                      0  $62     
        127        COUNT                                            ~63     $62
        128        SEND_VAL                                                 ~63
        129        DO_ICALL                                                 
   31   130        ECHO                                                     '----------------------%0A'
   32   131        INIT_FCALL                                               'var_dump'
        132        INIT_METHOD_CALL                                         !0, 'children'
        133        SEND_VAL_EX                                              'abstract'
        134        SEND_VAL_EX                                              <true>
        135        DO_FCALL                                      0  $65     
        136        FETCH_OBJ_R                                      ~66     $65, 'bar'
        137        GET_TYPE                                         ~67     ~66
        138        SEND_VAL                                                 ~67
        139        DO_ICALL                                                 
   33   140        INIT_FCALL                                               'var_dump'
        141        INIT_METHOD_CALL                                         !0, 'children'
        142        SEND_VAL_EX                                              'abstract'
        143        SEND_VAL_EX                                              <true>
        144        DO_FCALL                                      0  $69     
        145        ISSET_ISEMPTY_PROP_OBJ                           ~70     $69, 'bar'
        146        SEND_VAL                                                 ~70
        147        DO_ICALL                                                 
   34   148        INIT_FCALL                                               'var_dump'
        149        INIT_METHOD_CALL                                         !0, 'children'
        150        SEND_VAL_EX                                              'abstract'
        151        SEND_VAL_EX                                              <true>
        152        DO_FCALL                                      0  $72     
        153        ISSET_ISEMPTY_PROP_OBJ                           ~73     $72, 'bar'
        154        SEND_VAL                                                 ~73
        155        DO_ICALL                                                 
   35   156        INIT_FCALL                                               'var_dump'
        157        INIT_METHOD_CALL                                         !0, 'children'
        158        SEND_VAL_EX                                              'abstract'
        159        SEND_VAL_EX                                              <true>
        160        DO_FCALL                                      0  $75     
        161        FETCH_OBJ_R                                      ~76     $75, 'bar'
        162        TYPE_CHECK                                    2  ~77     ~76
        163        SEND_VAL                                                 ~77
        164        DO_ICALL                                                 
   36   165        INIT_FCALL                                               'var_dump'
        166        INIT_METHOD_CALL                                         !0, 'children'
        167        SEND_VAL_EX                                              'abstract'
        168        SEND_VAL_EX                                              <true>
        169        DO_FCALL                                      0  $79     
        170        FETCH_OBJ_R                                      ~80     $79, 'bar'
        171        COUNT                                            ~81     ~80
        172        SEND_VAL                                                 ~81
        173        DO_ICALL                                                 
   37   174        INIT_FCALL                                               'var_dump'
        175        INIT_METHOD_CALL                                         !0, 'children'
        176        SEND_VAL_EX                                              'abstract'
        177        SEND_VAL_EX                                              <true>
        178        DO_FCALL                                      0  $83     
        179        FETCH_OBJ_R                                      ~84     $83, 'bar'
        180        INIT_METHOD_CALL                                         ~84, 'children'
        181        DO_FCALL                                      0  $85     
        182        COUNT                                            ~86     $85
        183        SEND_VAL                                                 ~86
        184        DO_ICALL                                                 
        185      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
168.34 ms | 1408 KiB | 17 Q