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. * * NOTE: Error suppresion on @count() is used to suppress * "PHP Warning: count(): Node no longer exists" */ 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(gettype($xml->node)); var_dump(isset($xml->node)); var_dump(empty($xml->node)); var_dump(is_null($xml->node)); var_dump(($xml->node->count())); var_dump(@count($xml->node->children())); var_dump($xml->node->children()->count()); 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(($xml->bar->count())); var_dump(@count($xml->bar->children())); var_dump($xml->bar->children()->count()); 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/MrUJW
function name:  (null)
number of ops:  212
compiled vars:  !0 = $xml
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   10     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'
   11     6    >   NEW                                              $3      'SimpleXMLElement'
          7        SEND_VAL_EX                                              '%0A++++%3Cxml+xmlns%3Aabstract%3D%22urn%3Amy.org%3Aabstract%22%3E%0A++++++++%3Cabstract%3Anode%3Efoo%3C%2Fabstract%3Anode%3E%0A++++++++%3Cbar%3E123%3C%2Fbar%3E%0A++++%3C%2Fxml%3E%0A'
          8        DO_FCALL                                      0          
          9        ASSIGN                                                   !0, $3
   17    10        INIT_FCALL                                               'var_dump'
         11        FETCH_OBJ_R                                      ~6      !0, 'node'
         12        GET_TYPE                                         ~7      ~6
         13        SEND_VAL                                                 ~7
         14        DO_ICALL                                                 
   18    15        INIT_FCALL                                               'var_dump'
         16        ISSET_ISEMPTY_PROP_OBJ                           ~9      !0, 'node'
         17        SEND_VAL                                                 ~9
         18        DO_ICALL                                                 
   19    19        INIT_FCALL                                               'var_dump'
         20        ISSET_ISEMPTY_PROP_OBJ                           ~11     !0, 'node'
         21        SEND_VAL                                                 ~11
         22        DO_ICALL                                                 
   20    23        INIT_FCALL                                               'var_dump'
         24        FETCH_OBJ_R                                      ~13     !0, 'node'
         25        TYPE_CHECK                                    2  ~14     ~13
         26        SEND_VAL                                                 ~14
         27        DO_ICALL                                                 
   21    28        INIT_FCALL                                               'var_dump'
         29        FETCH_OBJ_R                                      ~16     !0, 'node'
         30        INIT_METHOD_CALL                                         ~16, 'count'
         31        DO_FCALL                                      0  $17     
         32        SEND_VAR                                                 $17
         33        DO_ICALL                                                 
   22    34        INIT_FCALL                                               'var_dump'
         35        BEGIN_SILENCE                                    ~19     
         36        FETCH_OBJ_R                                      ~20     !0, 'node'
         37        INIT_METHOD_CALL                                         ~20, 'children'
         38        DO_FCALL                                      0  $21     
         39        COUNT                                            ~22     $21
         40        END_SILENCE                                              ~19
         41        SEND_VAL                                                 ~22
         42        DO_ICALL                                                 
   23    43        INIT_FCALL                                               'var_dump'
         44        FETCH_OBJ_R                                      ~24     !0, 'node'
         45        INIT_METHOD_CALL                                         ~24, 'children'
         46        DO_FCALL                                      0  $25     
         47        INIT_METHOD_CALL                                         $25, 'count'
         48        DO_FCALL                                      0  $26     
         49        SEND_VAR                                                 $26
         50        DO_ICALL                                                 
   24    51        ECHO                                                     '----------------------%0A'
   25    52        INIT_FCALL                                               'var_dump'
         53        FETCH_OBJ_R                                      ~28     !0, 'bar'
         54        GET_TYPE                                         ~29     ~28
         55        SEND_VAL                                                 ~29
         56        DO_ICALL                                                 
   26    57        INIT_FCALL                                               'var_dump'
         58        ISSET_ISEMPTY_PROP_OBJ                           ~31     !0, 'bar'
         59        SEND_VAL                                                 ~31
         60        DO_ICALL                                                 
   27    61        INIT_FCALL                                               'var_dump'
         62        ISSET_ISEMPTY_PROP_OBJ                           ~33     !0, 'bar'
         63        SEND_VAL                                                 ~33
         64        DO_ICALL                                                 
   28    65        INIT_FCALL                                               'var_dump'
         66        FETCH_OBJ_R                                      ~35     !0, 'bar'
         67        TYPE_CHECK                                    2  ~36     ~35
         68        SEND_VAL                                                 ~36
         69        DO_ICALL                                                 
   29    70        INIT_FCALL                                               'var_dump'
         71        FETCH_OBJ_R                                      ~38     !0, 'bar'
         72        INIT_METHOD_CALL                                         ~38, 'count'
         73        DO_FCALL                                      0  $39     
         74        SEND_VAR                                                 $39
         75        DO_ICALL                                                 
   30    76        INIT_FCALL                                               'var_dump'
         77        BEGIN_SILENCE                                    ~41     
         78        FETCH_OBJ_R                                      ~42     !0, 'bar'
         79        INIT_METHOD_CALL                                         ~42, 'children'
         80        DO_FCALL                                      0  $43     
         81        COUNT                                            ~44     $43
         82        END_SILENCE                                              ~41
         83        SEND_VAL                                                 ~44
         84        DO_ICALL                                                 
   31    85        INIT_FCALL                                               'var_dump'
         86        FETCH_OBJ_R                                      ~46     !0, 'bar'
         87        INIT_METHOD_CALL                                         ~46, 'children'
         88        DO_FCALL                                      0  $47     
         89        INIT_METHOD_CALL                                         $47, 'count'
         90        DO_FCALL                                      0  $48     
         91        SEND_VAR                                                 $48
         92        DO_ICALL                                                 
   32    93        ECHO                                                     '----------------------%0A'
   33    94        INIT_FCALL                                               'var_dump'
         95        INIT_METHOD_CALL                                         !0, 'children'
         96        SEND_VAL_EX                                              'abstract'
         97        SEND_VAL_EX                                              <true>
         98        DO_FCALL                                      0  $50     
         99        FETCH_OBJ_R                                      ~51     $50, 'node'
        100        GET_TYPE                                         ~52     ~51
        101        SEND_VAL                                                 ~52
        102        DO_ICALL                                                 
   34   103        INIT_FCALL                                               'var_dump'
        104        INIT_METHOD_CALL                                         !0, 'children'
        105        SEND_VAL_EX                                              'abstract'
        106        SEND_VAL_EX                                              <true>
        107        DO_FCALL                                      0  $54     
        108        ISSET_ISEMPTY_PROP_OBJ                           ~55     $54, 'node'
        109        SEND_VAL                                                 ~55
        110        DO_ICALL                                                 
   35   111        INIT_FCALL                                               'var_dump'
        112        INIT_METHOD_CALL                                         !0, 'children'
        113        SEND_VAL_EX                                              'abstract'
        114        SEND_VAL_EX                                              <true>
        115        DO_FCALL                                      0  $57     
        116        ISSET_ISEMPTY_PROP_OBJ                           ~58     $57, 'node'
        117        SEND_VAL                                                 ~58
        118        DO_ICALL                                                 
   36   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        TYPE_CHECK                                    2  ~62     ~61
        126        SEND_VAL                                                 ~62
        127        DO_ICALL                                                 
   37   128        INIT_FCALL                                               'var_dump'
        129        BEGIN_SILENCE                                    ~64     
        130        INIT_METHOD_CALL                                         !0, 'children'
        131        SEND_VAL_EX                                              'abstract'
        132        SEND_VAL_EX                                              <true>
        133        DO_FCALL                                      0  $65     
        134        FETCH_OBJ_R                                      ~66     $65, 'node'
        135        COUNT                                            ~67     ~66
        136        END_SILENCE                                              ~64
        137        SEND_VAL                                                 ~67
        138        DO_ICALL                                                 
   38   139        INIT_FCALL                                               'var_dump'
        140        BEGIN_SILENCE                                    ~69     
        141        INIT_METHOD_CALL                                         !0, 'children'
        142        SEND_VAL_EX                                              'abstract'
        143        SEND_VAL_EX                                              <true>
        144        DO_FCALL                                      0  $70     
        145        FETCH_OBJ_R                                      ~71     $70, 'node'
        146        INIT_METHOD_CALL                                         ~71, 'children'
        147        DO_FCALL                                      0  $72     
        148        COUNT                                            ~73     $72
        149        END_SILENCE                                              ~69
        150        SEND_VAL                                                 ~73
        151        DO_ICALL                                                 
   39   152        ECHO                                                     '----------------------%0A'
   40   153        INIT_FCALL                                               'var_dump'
        154        INIT_METHOD_CALL                                         !0, 'children'
        155        SEND_VAL_EX                                              'abstract'
        156        SEND_VAL_EX                                              <true>
        157        DO_FCALL                                      0  $75     
        158        FETCH_OBJ_R                                      ~76     $75, 'bar'
        159        GET_TYPE                                         ~77     ~76
        160        SEND_VAL                                                 ~77
        161        DO_ICALL                                                 
   41   162        INIT_FCALL                                               'var_dump'
        163        INIT_METHOD_CALL                                         !0, 'children'
        164        SEND_VAL_EX                                              'abstract'
        165        SEND_VAL_EX                                              <true>
        166        DO_FCALL                                      0  $79     
        167        ISSET_ISEMPTY_PROP_OBJ                           ~80     $79, 'bar'
        168        SEND_VAL                                                 ~80
        169        DO_ICALL                                                 
   42   170        INIT_FCALL                                               'var_dump'
        171        INIT_METHOD_CALL                                         !0, 'children'
        172        SEND_VAL_EX                                              'abstract'
        173        SEND_VAL_EX                                              <true>
        174        DO_FCALL                                      0  $82     
        175        ISSET_ISEMPTY_PROP_OBJ                           ~83     $82, 'bar'
        176        SEND_VAL                                                 ~83
        177        DO_ICALL                                                 
   43   178        INIT_FCALL                                               'var_dump'
        179        INIT_METHOD_CALL                                         !0, 'children'
        180        SEND_VAL_EX                                              'abstract'
        181        SEND_VAL_EX                                              <true>
        182        DO_FCALL                                      0  $85     
        183        FETCH_OBJ_R                                      ~86     $85, 'bar'
        184        TYPE_CHECK                                    2  ~87     ~86
        185        SEND_VAL                                                 ~87
        186        DO_ICALL                                                 
   44   187        INIT_FCALL                                               'var_dump'
        188        BEGIN_SILENCE                                    ~89     
        189        INIT_METHOD_CALL                                         !0, 'children'
        190        SEND_VAL_EX                                              'abstract'
        191        SEND_VAL_EX                                              <true>
        192        DO_FCALL                                      0  $90     
        193        FETCH_OBJ_R                                      ~91     $90, 'bar'
        194        COUNT                                            ~92     ~91
        195        END_SILENCE                                              ~89
        196        SEND_VAL                                                 ~92
        197        DO_ICALL                                                 
   45   198        INIT_FCALL                                               'var_dump'
        199        BEGIN_SILENCE                                    ~94     
        200        INIT_METHOD_CALL                                         !0, 'children'
        201        SEND_VAL_EX                                              'abstract'
        202        SEND_VAL_EX                                              <true>
        203        DO_FCALL                                      0  $95     
        204        FETCH_OBJ_R                                      ~96     $95, 'bar'
        205        INIT_METHOD_CALL                                         ~96, 'children'
        206        DO_FCALL                                      0  $97     
        207        COUNT                                            ~98     $97
        208        END_SILENCE                                              ~94
        209        SEND_VAL                                                 ~98
        210        DO_ICALL                                                 
        211      > RETURN                                                   1

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
154.35 ms | 1417 KiB | 17 Q