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 ('Saturday' === $datetime->format('l')) { $datetime->add(new DateInterval('P1D')); } if ('Sunday' === $datetime->format('l')) { $datetime->add(new DateInterval('P1D')); } $datetime->setTime(8,30); $datetime->add($interval); } return $datetime; } $future = addRollover('2014-01-03 15:15: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/QcL3v
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-01-03+15%3A15%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 = 77
Branch analysis from position: 32
2 jumps found. (Code = 43) Position 1 = 53, Position 2 = 59
Branch analysis from position: 53
2 jumps found. (Code = 43) Position 1 = 64, Position 2 = 70
Branch analysis from position: 64
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 70
Branch analysis from position: 59
Branch analysis from position: 77
Branch analysis from position: 30
Branch analysis from position: 31
Branch analysis from position: 19
filename:       /in/QcL3v
function name:  addRollover
number of ops:  79
compiled vars:  !0 = $givenDate, !1 = $addtime, !2 = $datetime, !3 = $endofday, !4 = $interval
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    3     0  E >   RECV                                             !0      
          1        RECV                                             !1      
    4     2        NEW                                              $5      'DateTime'
          3        SEND_VAR_EX                                              !0
          4        DO_FCALL                                      0          
          5        ASSIGN                                                   !2, $5
    5     6        INIT_METHOD_CALL                                         !2, 'modify'
          7        SEND_VAR_EX                                              !1
          8        DO_FCALL                                      0          
    7     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
         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
         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, ->77
    8    32    >   CLONE                                            ~17     !2
         33        ASSIGN                                                   !3, ~17
    9    34        INIT_METHOD_CALL                                         !3, 'setTime'
         35        SEND_VAL_EX                                              17
         36        SEND_VAL_EX                                              30
         37        DO_FCALL                                      0          
   10    38        INIT_METHOD_CALL                                         !3, 'diff'
         39        SEND_VAR_EX                                              !2
         40        DO_FCALL                                      0  $20     
         41        ASSIGN                                                   !4, $20
   12    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          
   13    48        INIT_METHOD_CALL                                         !2, 'format'
         49        SEND_VAL_EX                                              'l'
         50        DO_FCALL                                      0  $25     
         51        IS_IDENTICAL                                             $25, 'Saturday'
         52      > JMPZ                                                     ~26, ->59
   14    53    >   INIT_METHOD_CALL                                         !2, 'add'
         54        NEW                                              $27     'DateInterval'
         55        SEND_VAL_EX                                              'P1D'
         56        DO_FCALL                                      0          
         57        SEND_VAR_NO_REF_EX                                       $27
         58        DO_FCALL                                      0          
   16    59    >   INIT_METHOD_CALL                                         !2, 'format'
         60        SEND_VAL_EX                                              'l'
         61        DO_FCALL                                      0  $30     
         62        IS_IDENTICAL                                             $30, 'Sunday'
         63      > JMPZ                                                     ~31, ->70
   17    64    >   INIT_METHOD_CALL                                         !2, 'add'
         65        NEW                                              $32     'DateInterval'
         66        SEND_VAL_EX                                              'P1D'
         67        DO_FCALL                                      0          
         68        SEND_VAR_NO_REF_EX                                       $32
         69        DO_FCALL                                      0          
   19    70    >   INIT_METHOD_CALL                                         !2, 'setTime'
         71        SEND_VAL_EX                                              8
         72        SEND_VAL_EX                                              30
         73        DO_FCALL                                      0          
   20    74        INIT_METHOD_CALL                                         !2, 'add'
         75        SEND_VAR_EX                                              !4
         76        DO_FCALL                                      0          
   23    77    > > RETURN                                                   !2
   24    78*     > RETURN                                                   null

End of function addrollover

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
160.41 ms | 1407 KiB | 14 Q