3v4l.org

run code in 300+ PHP versions simultaneously
<?php class NetUtils { private ?string $ipv4 = null; private ?string $subnet_mask = null; private ?string $network_address = null; private ?string $broadcast_address = null; public function setIpv4(string $ipv4): NetUtils { $this->ipv4 = $ipv4; return $this; } public function setSubnetMask(string $subnet_mask): NetUtils { $this->subnet_mask = $subnet_mask; return $this; } public function broadcastAddress(): string { return $this->broadcast_address; } public function networkAddress(): string { return $this->network_address; } public function calculate(): NetUtils { $network_address = []; $broadcast_address = []; for($i = 0; $i <= count(($ipv4 = explode('.', $this->ipv4))) -1; $i++) $broadcast_address[] = ($network_address[] = (int) $ipv4[$i] & (int) ($subnet_mask = explode('.', $this->subnet_mask))[$i]) | (~(int) $subnet_mask[$i]) + hexdec('100'); $this->network_address = sprintf('%s', implode('.', $network_address)); $this->broadcast_address = sprintf('%s', implode('.', $broadcast_address)); return $this; } } $network = (new NetUtils)->setIpv4('130.45.34.36') ->setSubnetMask('255.255.240.0') ->calculate(); echo "Network Address: {$network->networkAddress()}\nBroadcast Address: {$network->broadcastAddress()}";
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/9ItZ3
function name:  (null)
number of ops:  21
compiled vars:  !0 = $network
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   48     0  E >   NEW                                              $1      'NetUtils'
          1        DO_FCALL                                      0          
          2        INIT_METHOD_CALL                                         $1, 'setIpv4'
          3        SEND_VAL_EX                                              '130.45.34.36'
          4        DO_FCALL                                      0  $3      
   49     5        INIT_METHOD_CALL                                         $3, 'setSubnetMask'
          6        SEND_VAL_EX                                              '255.255.240.0'
          7        DO_FCALL                                      0  $4      
   50     8        INIT_METHOD_CALL                                         $4, 'calculate'
          9        DO_FCALL                                      0  $5      
   48    10        ASSIGN                                                   !0, $5
   52    11        ROPE_INIT                                     4  ~10     'Network+Address%3A+'
         12        INIT_METHOD_CALL                                         !0, 'networkAddress'
         13        DO_FCALL                                      0  $7      
         14        ROPE_ADD                                      1  ~10     ~10, $7
         15        ROPE_ADD                                      2  ~10     ~10, '%0ABroadcast+Address%3A+'
         16        INIT_METHOD_CALL                                         !0, 'broadcastAddress'
         17        DO_FCALL                                      0  $8      
         18        ROPE_END                                      3  ~9      ~10, $8
         19        ECHO                                                     ~9
         20      > RETURN                                                   1

Class NetUtils:
Function setipv4:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/9ItZ3
function name:  setIpv4
number of ops:  8
compiled vars:  !0 = $ipv4
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   10     0  E >   RECV                                             !0      
   12     1        ASSIGN_OBJ                                               'ipv4'
          2        OP_DATA                                                  !0
   13     3        FETCH_THIS                                       ~2      
          4        VERIFY_RETURN_TYPE                                       ~2
          5      > RETURN                                                   ~2
   14     6*       VERIFY_RETURN_TYPE                                       
          7*     > RETURN                                                   null

End of function setipv4

Function setsubnetmask:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/9ItZ3
function name:  setSubnetMask
number of ops:  8
compiled vars:  !0 = $subnet_mask
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   16     0  E >   RECV                                             !0      
   18     1        ASSIGN_OBJ                                               'subnet_mask'
          2        OP_DATA                                                  !0
   19     3        FETCH_THIS                                       ~2      
          4        VERIFY_RETURN_TYPE                                       ~2
          5      > RETURN                                                   ~2
   20     6*       VERIFY_RETURN_TYPE                                       
          7*     > RETURN                                                   null

End of function setsubnetmask

Function broadcastaddress:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/9ItZ3
function name:  broadcastAddress
number of ops:  5
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   24     0  E >   FETCH_OBJ_R                                      ~0      'broadcast_address'
          1        VERIFY_RETURN_TYPE                                       ~0
          2      > RETURN                                                   ~0
   25     3*       VERIFY_RETURN_TYPE                                       
          4*     > RETURN                                                   null

End of function broadcastaddress

Function networkaddress:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/9ItZ3
function name:  networkAddress
number of ops:  5
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   29     0  E >   FETCH_OBJ_R                                      ~0      'network_address'
          1        VERIFY_RETURN_TYPE                                       ~0
          2      > RETURN                                                   ~0
   30     3*       VERIFY_RETURN_TYPE                                       
          4*     > RETURN                                                   null

End of function networkaddress

Function calculate:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 28
Branch analysis from position: 28
2 jumps found. (Code = 44) Position 1 = 38, Position 2 = 4
Branch analysis from position: 38
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 4
2 jumps found. (Code = 44) Position 1 = 38, Position 2 = 4
Branch analysis from position: 38
Branch analysis from position: 4
filename:       /in/9ItZ3
function name:  calculate
number of ops:  63
compiled vars:  !0 = $network_address, !1 = $broadcast_address, !2 = $i, !3 = $ipv4, !4 = $subnet_mask
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   34     0  E >   ASSIGN                                                   !0, <array>
   35     1        ASSIGN                                                   !1, <array>
   37     2        ASSIGN                                                   !2, 0
          3      > JMP                                                      ->28
   38     4    >   FETCH_DIM_R                                      ~10     !3, !2
          5        CAST                                          4  ~11     ~10
          6        INIT_FCALL                                               'explode'
          7        SEND_VAL                                                 '.'
          8        FETCH_OBJ_R                                      ~12     'subnet_mask'
          9        SEND_VAL                                                 ~12
         10        DO_ICALL                                         $13     
         11        ASSIGN                                           ~14     !4, $13
         12        FETCH_DIM_R                                      ~15     ~14, !2
         13        CAST                                          4  ~16     ~15
         14        BW_AND                                           ~17     ~11, ~16
         15        ASSIGN_DIM                                       ~9      !0
         16        OP_DATA                                                  ~17
   39    17        FETCH_DIM_R                                      ~18     !4, !2
         18        CAST                                          4  ~19     ~18
         19        BW_NOT                                           ~20     ~19
         20        INIT_FCALL                                               'hexdec'
         21        SEND_VAL                                                 '100'
         22        DO_ICALL                                         $21     
         23        ADD                                              ~22     ~20, $21
         24        BW_OR                                            ~23     ~9, ~22
   38    25        ASSIGN_DIM                                               !1
   39    26        OP_DATA                                                  ~23
   37    27        PRE_INC                                                  !2
         28    >   INIT_FCALL                                               'explode'
         29        SEND_VAL                                                 '.'
         30        FETCH_OBJ_R                                      ~25     'ipv4'
         31        SEND_VAL                                                 ~25
         32        DO_ICALL                                         $26     
         33        ASSIGN                                           ~27     !3, $26
         34        COUNT                                            ~28     ~27
         35        SUB                                              ~29     ~28, 1
         36        IS_SMALLER_OR_EQUAL                                      !2, ~29
         37      > JMPNZ                                                    ~30, ->4
   41    38    >   INIT_FCALL                                               'sprintf'
         39        SEND_VAL                                                 '%25s'
         40        INIT_FCALL                                               'implode'
         41        SEND_VAL                                                 '.'
         42        SEND_VAR                                                 !0
         43        DO_ICALL                                         $32     
         44        SEND_VAR                                                 $32
         45        DO_ICALL                                         $33     
         46        ASSIGN_OBJ                                               'network_address'
         47        OP_DATA                                                  $33
   42    48        INIT_FCALL                                               'sprintf'
         49        SEND_VAL                                                 '%25s'
         50        INIT_FCALL                                               'implode'
         51        SEND_VAL                                                 '.'
         52        SEND_VAR                                                 !1
         53        DO_ICALL                                         $35     
         54        SEND_VAR                                                 $35
         55        DO_ICALL                                         $36     
         56        ASSIGN_OBJ                                               'broadcast_address'
         57        OP_DATA                                                  $36
   44    58        FETCH_THIS                                       ~37     
         59        VERIFY_RETURN_TYPE                                       ~37
         60      > RETURN                                                   ~37
   45    61*       VERIFY_RETURN_TYPE                                       
         62*     > RETURN                                                   null

End of function calculate

End of class NetUtils.

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
148.34 ms | 1025 KiB | 17 Q