3v4l.org

run code in 300+ PHP versions simultaneously
<?php class MyDateTime extends DateTime { public static function createFromFormat($format, $time, $timezone = null) { $version = explode('.', phpversion()); if(!$timezone) $timezone = new DateTimeZone(date_default_timezone_get()); if(((int)$version[0] >= 5 && (int)$version[1] >= 2 && (int)$version[2] > 17)){ return parent::createFromFormat($format, $time, $timezone); } $schedule = $value; $schedule_format = str_replace(array('Y','m','d', 'H', 'i','a'),array('%Y','%m','%d', '%I', '%M', '%p' ) ,$format); // %Y, %m and %d correspond to date()'s Y m and d. // %I corresponds to H, %M to i and %p to a $ugly = strptime($schedule, $schedule_format); $ymd = sprintf( // This is a format string that takes six total decimal // arguments, then left-pads them with zeros to either // 4 or 2 characters, as needed '%04d-%02d-%02d %02d:%02d:%02d', $ugly['tm_year'] + 1900, // This will be "111", so we need to add 1900. $ugly['tm_mon'] + 1, // This will be the month minus one, so we add one. $ugly['tm_mday'], $ugly['tm_hour'], $ugly['tm_min'], $ugly['tm_sec'] ); $new_schedule = new DateTime($ymd); return $new_schedule; return new DateTime(date($format, strtotime($time)), $timezone); } } $dateTime = MyDateTime::createFromFormat('dmY', '13062013'); var_dump($dateTime); var_dump($dateTime->format('dmY'));
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/8hLV1
function name:  (null)
number of ops:  15
compiled vars:  !0 = $dateTime
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   38     0  E >   INIT_STATIC_METHOD_CALL                                  'MyDateTime', 'createFromFormat'
          1        SEND_VAL                                                 'dmY'
          2        SEND_VAL                                                 '13062013'
          3        DO_FCALL                                      0  $1      
          4        ASSIGN                                                   !0, $1
   39     5        INIT_FCALL                                               'var_dump'
          6        SEND_VAR                                                 !0
          7        DO_ICALL                                                 
   40     8        INIT_FCALL                                               'var_dump'
          9        INIT_METHOD_CALL                                         !0, 'format'
         10        SEND_VAL_EX                                              'dmY'
         11        DO_FCALL                                      0  $4      
         12        SEND_VAR                                                 $4
         13        DO_ICALL                                                 
         14      > RETURN                                                   1

Class MyDateTime:
Function createfromformat:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 12, Position 2 = 18
Branch analysis from position: 12
2 jumps found. (Code = 46) Position 1 = 22, Position 2 = 26
Branch analysis from position: 22
2 jumps found. (Code = 46) Position 1 = 27, Position 2 = 31
Branch analysis from position: 27
2 jumps found. (Code = 43) Position 1 = 32, Position 2 = 38
Branch analysis from position: 32
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 38
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 31
Branch analysis from position: 26
Branch analysis from position: 18
filename:       /in/8hLV1
function name:  createFromFormat
number of ops:  86
compiled vars:  !0 = $format, !1 = $time, !2 = $timezone, !3 = $version, !4 = $schedule, !5 = $value, !6 = $schedule_format, !7 = $ugly, !8 = $ymd, !9 = $new_schedule
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    4     0  E >   RECV                                             !0      
          1        RECV                                             !1      
          2        RECV_INIT                                        !2      null
    6     3        INIT_FCALL                                               'explode'
          4        SEND_VAL                                                 '.'
          5        INIT_FCALL                                               'phpversion'
          6        DO_ICALL                                         $10     
          7        SEND_VAR                                                 $10
          8        DO_ICALL                                         $11     
          9        ASSIGN                                                   !3, $11
    7    10        BOOL_NOT                                         ~13     !2
         11      > JMPZ                                                     ~13, ->18
         12    >   NEW                                              $14     'DateTimeZone'
         13        INIT_FCALL                                               'date_default_timezone_get'
         14        DO_ICALL                                         $15     
         15        SEND_VAR_NO_REF_EX                                       $15
         16        DO_FCALL                                      0          
         17        ASSIGN                                                   !2, $14
    8    18    >   FETCH_DIM_R                                      ~18     !3, 0
         19        CAST                                          4  ~19     ~18
         20        IS_SMALLER_OR_EQUAL                              ~20     5, ~19
         21      > JMPZ_EX                                          ~20     ~20, ->26
         22    >   FETCH_DIM_R                                      ~21     !3, 1
         23        CAST                                          4  ~22     ~21
         24        IS_SMALLER_OR_EQUAL                              ~23     2, ~22
         25        BOOL                                             ~20     ~23
         26    > > JMPZ_EX                                          ~20     ~20, ->31
         27    >   FETCH_DIM_R                                      ~24     !3, 2
         28        CAST                                          4  ~25     ~24
         29        IS_SMALLER                                       ~26     17, ~25
         30        BOOL                                             ~20     ~26
         31    > > JMPZ                                                     ~20, ->38
    9    32    >   INIT_STATIC_METHOD_CALL                                  'createFromFormat'
         33        SEND_VAR_EX                                              !0
         34        SEND_VAR_EX                                              !1
         35        SEND_VAR_EX                                              !2
         36        DO_FCALL                                      0  $27     
         37      > RETURN                                                   $27
   12    38    >   ASSIGN                                                   !4, !5
   13    39        INIT_FCALL                                               'str_replace'
         40        SEND_VAL                                                 <array>
         41        SEND_VAL                                                 <array>
         42        SEND_VAR                                                 !0
         43        DO_ICALL                                         $29     
         44        ASSIGN                                                   !6, $29
   16    45        INIT_FCALL                                               'strptime'
         46        SEND_VAR                                                 !4
         47        SEND_VAR                                                 !6
         48        DO_ICALL                                         $31     
         49        ASSIGN                                                   !7, $31
   17    50        INIT_FCALL                                               'sprintf'
   21    51        SEND_VAL                                                 '%2504d-%2502d-%2502d+%2502d%3A%2502d%3A%2502d'
   22    52        FETCH_DIM_R                                      ~33     !7, 'tm_year'
         53        ADD                                              ~34     ~33, 1900
         54        SEND_VAL                                                 ~34
   23    55        FETCH_DIM_R                                      ~35     !7, 'tm_mon'
         56        ADD                                              ~36     ~35, 1
         57        SEND_VAL                                                 ~36
   24    58        FETCH_DIM_R                                      ~37     !7, 'tm_mday'
         59        SEND_VAL                                                 ~37
   25    60        FETCH_DIM_R                                      ~38     !7, 'tm_hour'
         61        SEND_VAL                                                 ~38
   26    62        FETCH_DIM_R                                      ~39     !7, 'tm_min'
         63        SEND_VAL                                                 ~39
   27    64        FETCH_DIM_R                                      ~40     !7, 'tm_sec'
         65        SEND_VAL                                                 ~40
         66        DO_ICALL                                         $41     
   17    67        ASSIGN                                                   !8, $41
   29    68        NEW                                              $43     'DateTime'
         69        SEND_VAR_EX                                              !8
         70        DO_FCALL                                      0          
         71        ASSIGN                                                   !9, $43
   31    72      > RETURN                                                   !9
   34    73*       NEW                                              $46     'DateTime'
         74*       INIT_FCALL                                               'date'
         75*       SEND_VAR                                                 !0
         76*       INIT_FCALL                                               'strtotime'
         77*       SEND_VAR                                                 !1
         78*       DO_ICALL                                         $47     
         79*       SEND_VAR                                                 $47
         80*       DO_ICALL                                         $48     
         81*       SEND_VAR_NO_REF_EX                                       $48
         82*       SEND_VAR_EX                                              !2
         83*       DO_FCALL                                      0          
         84*       RETURN                                                   $46
   35    85*     > RETURN                                                   null

End of function createfromformat

End of class MyDateTime.

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
157.01 ms | 1404 KiB | 31 Q