3v4l.org

run code in 300+ PHP versions simultaneously
<?php class MyDateInterval extends DateInterval { /** * @return MyDateInterval */ public static function fromDateInterval(DateInterval $from) { return new MyDateInterval($from->format('P%yY%dDT%hH%iM%sS')); } public function add(DateInterval $interval) { foreach (str_split('ymdhis') as $prop) { $this->$prop += $interval->$prop; } } } $a = new DateTime('14:25'); $b = new DateTime('17:30'); $interval1 = $a->diff($b); echo "interval 1: ", $interval1->format("%H:%I"), "\n"; $c = new DateTime('08:00'); $d = new DateTime('13:00'); $interval2 = $c->diff($d); echo "interval 2: ", $interval2->format("%H:%I"), "\n"; $e = MyDateInterval::fromDateInterval($interval1); $e->add($interval2); echo "Total interval: ", $e->format("%H:%I"), "\n";
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/BcOh2
function name:  (null)
number of ops:  50
compiled vars:  !0 = $a, !1 = $b, !2 = $interval1, !3 = $c, !4 = $d, !5 = $interval2, !6 = $e
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   22     0  E >   NEW                                              $7      'DateTime'
          1        SEND_VAL_EX                                              '14%3A25'
          2        DO_FCALL                                      0          
          3        ASSIGN                                                   !0, $7
   23     4        NEW                                              $10     'DateTime'
          5        SEND_VAL_EX                                              '17%3A30'
          6        DO_FCALL                                      0          
          7        ASSIGN                                                   !1, $10
   24     8        INIT_METHOD_CALL                                         !0, 'diff'
          9        SEND_VAR_EX                                              !1
         10        DO_FCALL                                      0  $13     
         11        ASSIGN                                                   !2, $13
   25    12        ECHO                                                     'interval+1%3A+'
         13        INIT_METHOD_CALL                                         !2, 'format'
         14        SEND_VAL_EX                                              '%25H%3A%25I'
         15        DO_FCALL                                      0  $15     
         16        ECHO                                                     $15
         17        ECHO                                                     '%0A'
   27    18        NEW                                              $16     'DateTime'
         19        SEND_VAL_EX                                              '08%3A00'
         20        DO_FCALL                                      0          
         21        ASSIGN                                                   !3, $16
   28    22        NEW                                              $19     'DateTime'
         23        SEND_VAL_EX                                              '13%3A00'
         24        DO_FCALL                                      0          
         25        ASSIGN                                                   !4, $19
   29    26        INIT_METHOD_CALL                                         !3, 'diff'
         27        SEND_VAR_EX                                              !4
         28        DO_FCALL                                      0  $22     
         29        ASSIGN                                                   !5, $22
   30    30        ECHO                                                     'interval+2%3A+'
         31        INIT_METHOD_CALL                                         !5, 'format'
         32        SEND_VAL_EX                                              '%25H%3A%25I'
         33        DO_FCALL                                      0  $24     
         34        ECHO                                                     $24
         35        ECHO                                                     '%0A'
   32    36        INIT_STATIC_METHOD_CALL                                  'MyDateInterval', 'fromDateInterval'
         37        SEND_VAR                                                 !2
         38        DO_FCALL                                      0  $25     
         39        ASSIGN                                                   !6, $25
   33    40        INIT_METHOD_CALL                                         !6, 'add'
         41        SEND_VAR_EX                                              !5
         42        DO_FCALL                                      0          
   34    43        ECHO                                                     'Total+interval%3A+'
         44        INIT_METHOD_CALL                                         !6, 'format'
         45        SEND_VAL_EX                                              '%25H%3A%25I'
         46        DO_FCALL                                      0  $28     
         47        ECHO                                                     $28
         48        ECHO                                                     '%0A'
         49      > RETURN                                                   1

Class MyDateInterval:
Function fromdateinterval:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/BcOh2
function name:  fromDateInterval
number of ops:  9
compiled vars:  !0 = $from
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    8     0  E >   RECV                                             !0      
   10     1        NEW                                              $1      'MyDateInterval'
          2        INIT_METHOD_CALL                                         !0, 'format'
          3        SEND_VAL_EX                                              'P%25yY%25dDT%25hH%25iM%25sS'
          4        DO_FCALL                                      0  $2      
          5        SEND_VAR_NO_REF_EX                                       $2
          6        DO_FCALL                                      0          
          7      > RETURN                                                   $1
   11     8*     > RETURN                                                   null

End of function fromdateinterval

Function add:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 77) Position 1 = 5, Position 2 = 10
Branch analysis from position: 5
2 jumps found. (Code = 78) Position 1 = 6, Position 2 = 10
Branch analysis from position: 6
1 jumps found. (Code = 42) Position 1 = 5
Branch analysis from position: 5
Branch analysis from position: 10
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 10
filename:       /in/BcOh2
function name:  add
number of ops:  12
compiled vars:  !0 = $interval, !1 = $prop
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   13     0  E >   RECV                                             !0      
   15     1        INIT_FCALL                                               'str_split'
          2        SEND_VAL                                                 'ymdhis'
          3        DO_ICALL                                         $2      
          4      > FE_RESET_R                                       $3      $2, ->10
          5    > > FE_FETCH_R                                               $3, !1, ->10
   17     6    >   FETCH_OBJ_R                                      ~5      !0, !1
          7        ASSIGN_OBJ_OP                                 1          !1
          8        OP_DATA                                                  ~5
   15     9      > JMP                                                      ->5
         10    >   FE_FREE                                                  $3
   19    11      > RETURN                                                   null

End of function add

End of class MyDateInterval.

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
137.05 ms | 1003 KiB | 14 Q