3v4l.org

run code in 300+ PHP versions simultaneously
<?php function addRollover($givenDate, $addtime) { $datetime = new DateTime($givenDate); $datetime->modify($addtime); if (in_array($datetime->format('l'), array('Sunday','Saturday')) || 17 < $datetime->format('G') || (17 === $datetime->format('G') && 30 < $datetime->format('G')) ) { $endofday = clone $datetime; $endofday->setTime(17,30); $interval = $endofday->diff($datetime); $datetime->add(new DateInterval('P1D')); if (in_array($datetime->format('l'), array('Saturday', 'Sunday'))) { $datetime->modify('next Monday'); } $datetime->setTime(8,30); $datetime->add($interval); } return $datetime; } $future = addRollover('2014-06-26 11:41:00', '+4 hours'); echo $future->format('Y-m-d H:i:s');
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/fscIn
function name:  (null)
number of ops:  10
compiled vars:  !0 = $future
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   26     0  E >   INIT_FCALL                                               'addrollover'
          1        SEND_VAL                                                 '2014-06-26+11%3A41%3A00'
          2        SEND_VAL                                                 '%2B4+hours'
          3        DO_FCALL                                      0  $1      
          4        ASSIGN                                                   !0, $1
   27     5        INIT_METHOD_CALL                                         !0, 'format'
          6        SEND_VAL_EX                                              'Y-m-d+H%3Ai%3As'
          7        DO_FCALL                                      0  $3      
          8        ECHO                                                     $3
          9      > RETURN                                                   1

Function addrollover:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 47) Position 1 = 14, Position 2 = 19
Branch analysis from position: 14
2 jumps found. (Code = 47) Position 1 = 20, Position 2 = 31
Branch analysis from position: 20
2 jumps found. (Code = 46) Position 1 = 25, Position 2 = 30
Branch analysis from position: 25
2 jumps found. (Code = 43) Position 1 = 32, Position 2 = 63
Branch analysis from position: 32
2 jumps found. (Code = 43) Position 1 = 53, Position 2 = 56
Branch analysis from position: 53
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 56
Branch analysis from position: 63
Branch analysis from position: 30
Branch analysis from position: 31
Branch analysis from position: 19
filename:       /in/fscIn
function name:  addRollover
number of ops:  65
compiled vars:  !0 = $givenDate, !1 = $addtime, !2 = $datetime, !3 = $endofday, !4 = $interval
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    2     0  E >   RECV                                             !0      
          1        RECV                                             !1      
    3     2        NEW                                              $5      'DateTime'
          3        SEND_VAR_EX                                              !0
          4        DO_FCALL                                      0          
          5        ASSIGN                                                   !2, $5
    4     6        INIT_METHOD_CALL                                         !2, 'modify'
          7        SEND_VAR_EX                                              !1
          8        DO_FCALL                                      0          
    6     9        INIT_METHOD_CALL                                         !2, 'format'
         10        SEND_VAL_EX                                              'l'
         11        DO_FCALL                                      0  $9      
         12        IN_ARRAY                                         ~10     $9, <array>
         13      > JMPNZ_EX                                         ~10     ~10, ->19
    7    14    >   INIT_METHOD_CALL                                         !2, 'format'
         15        SEND_VAL_EX                                              'G'
         16        DO_FCALL                                      0  $11     
         17        IS_SMALLER                                       ~12     17, $11
         18        BOOL                                             ~10     ~12
         19    > > JMPNZ_EX                                         ~10     ~10, ->31
    8    20    >   INIT_METHOD_CALL                                         !2, 'format'
         21        SEND_VAL_EX                                              'G'
         22        DO_FCALL                                      0  $13     
         23        IS_IDENTICAL                                     ~14     $13, 17
         24      > JMPZ_EX                                          ~14     ~14, ->30
         25    >   INIT_METHOD_CALL                                         !2, 'format'
         26        SEND_VAL_EX                                              'G'
         27        DO_FCALL                                      0  $15     
         28        IS_SMALLER                                       ~16     30, $15
         29        BOOL                                             ~14     ~16
         30    >   BOOL                                             ~10     ~14
         31    > > JMPZ                                                     ~10, ->63
   10    32    >   CLONE                                            ~17     !2
         33        ASSIGN                                                   !3, ~17
   11    34        INIT_METHOD_CALL                                         !3, 'setTime'
         35        SEND_VAL_EX                                              17
         36        SEND_VAL_EX                                              30
         37        DO_FCALL                                      0          
   12    38        INIT_METHOD_CALL                                         !3, 'diff'
         39        SEND_VAR_EX                                              !2
         40        DO_FCALL                                      0  $20     
         41        ASSIGN                                                   !4, $20
   14    42        INIT_METHOD_CALL                                         !2, 'add'
         43        NEW                                              $22     'DateInterval'
         44        SEND_VAL_EX                                              'P1D'
         45        DO_FCALL                                      0          
         46        SEND_VAR_NO_REF_EX                                       $22
         47        DO_FCALL                                      0          
   15    48        INIT_METHOD_CALL                                         !2, 'format'
         49        SEND_VAL_EX                                              'l'
         50        DO_FCALL                                      0  $25     
         51        IN_ARRAY                                                 $25, <array>
         52      > JMPZ                                                     ~26, ->56
   16    53    >   INIT_METHOD_CALL                                         !2, 'modify'
         54        SEND_VAL_EX                                              'next+Monday'
         55        DO_FCALL                                      0          
   18    56    >   INIT_METHOD_CALL                                         !2, 'setTime'
         57        SEND_VAL_EX                                              8
         58        SEND_VAL_EX                                              30
         59        DO_FCALL                                      0          
   19    60        INIT_METHOD_CALL                                         !2, 'add'
         61        SEND_VAR_EX                                              !4
         62        DO_FCALL                                      0          
   22    63    > > RETURN                                                   !2
   23    64*     > RETURN                                                   null

End of function addrollover

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
153.75 ms | 1394 KiB | 14 Q