3v4l.org

run code in 300+ PHP versions simultaneously
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 5, Position 2 = 6
Branch analysis from position: 5
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 6
filename:       /in/fnj67
function name:  (null)
number of ops:  37
compiled vars:  !0 = $closures, !1 = $date, !2 = $holidays
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    4     0  E >   INIT_FCALL                                               'function_exists'
          1        SEND_VAL                                                 'easter_date'
          2        DO_ICALL                                         $3      
          3        BOOL_NOT                                         ~4      $3
          4      > JMPZ                                                     ~4, ->6
    9     5    >   DECLARE_FUNCTION                                         'easter_date'
   28     6    >   ASSIGN                                                   !0, <array>
   37     7        INIT_FCALL                                               'file_put_contents'
          8        FETCH_CLASS_CONSTANT                             ~6      'Holiday', 'CLOSURES_FILE'
          9        SEND_VAL                                                 ~6
         10        INIT_FCALL                                               'var_export'
         11        SEND_VAR                                                 !0
         12        SEND_VAL                                                 <true>
         13        DO_ICALL                                         $7      
         14        CONCAT                                           ~8      '%3C%3Fphp+return+', $7
         15        CONCAT                                           ~9      ~8, '%3B'
         16        SEND_VAL                                                 ~9
         17        DO_ICALL                                                 
  206    18        NEW                                              $11     'DateTime'
         19        SEND_VAL_EX                                              '2017-08-28'
         20        DO_FCALL                                      0          
         21        ASSIGN                                                   !1, $11
  207    22        INIT_STATIC_METHOD_CALL                                  'Holiday', 'getHolidays'
         23        SEND_VAR                                                 !1
         24        DO_FCALL                                      0  $14     
         25        ASSIGN                                                   !2, $14
  208    26        INIT_FCALL                                               'var_export'
         27        SEND_VAR                                                 !2
         28        DO_ICALL                                                 
  209    29        ECHO                                                     '%0A'
  210    30        INIT_FCALL                                               'var_dump'
         31        INIT_STATIC_METHOD_CALL                                  'Holiday', 'isHoliday'
         32        SEND_VAR                                                 !1
         33        DO_FCALL                                      0  $17     
         34        SEND_VAR                                                 $17
         35        DO_ICALL                                                 
         36      > RETURN                                                   1


Dynamic Functions:
Dynamic Function 0
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/fnj67
function name:  easter_date
number of ops:  98
compiled vars:  !0 = $year, !1 = $J, !2 = $K, !3 = $M, !4 = $S, !5 = $A, !6 = $D, !7 = $R, !8 = $OG, !9 = $SZ, !10 = $OE, !11 = $OS
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    9     0  E >   RECV                                             !0      
   10     1        INIT_FCALL                                               'date'
          2        SEND_VAL                                                 'Y'
          3        INIT_FCALL                                               'mktime'
          4        SEND_VAL                                                 0
          5        SEND_VAL                                                 0
          6        SEND_VAL                                                 0
          7        SEND_VAL                                                 1
          8        SEND_VAL                                                 1
          9        SEND_VAR                                                 !0
         10        DO_ICALL                                         $12     
         11        SEND_VAR                                                 $12
         12        DO_ICALL                                         $13     
         13        ASSIGN                                                   !1, $13
   11    14        INIT_FCALL                                               'floor'
         15        DIV                                              ~15     !1, 100
         16        SEND_VAL                                                 ~15
         17        DO_ICALL                                         $16     
         18        ASSIGN                                                   !2, $16
   12    19        INIT_FCALL                                               'floor'
         20        MUL                                              ~18     !2, 3
         21        ADD                                              ~19     ~18, 3
         22        DIV                                              ~20     ~19, 4
         23        SEND_VAL                                                 ~20
         24        DO_ICALL                                         $21     
         25        ADD                                              ~22     15, $21
         26        INIT_FCALL                                               'floor'
         27        MUL                                              ~23     !2, 8
         28        ADD                                              ~24     ~23, 13
         29        DIV                                              ~25     ~24, 25
         30        SEND_VAL                                                 ~25
         31        DO_ICALL                                         $26     
         32        SUB                                              ~27     ~22, $26
         33        ASSIGN                                                   !3, ~27
   13    34        INIT_FCALL                                               'floor'
         35        MUL                                              ~29     !2, 3
         36        ADD                                              ~30     ~29, 3
         37        DIV                                              ~31     ~30, 4
         38        SEND_VAL                                                 ~31
         39        DO_ICALL                                         $32     
         40        SUB                                              ~33     2, $32
         41        ASSIGN                                                   !4, ~33
   14    42        MOD                                              ~35     !1, 19
         43        ASSIGN                                                   !5, ~35
   15    44        MUL                                              ~37     !5, 19
         45        ADD                                              ~38     ~37, !3
         46        MOD                                              ~39     ~38, 30
         47        ASSIGN                                                   !6, ~39
   16    48        INIT_FCALL                                               'floor'
         49        DIV                                              ~41     !6, 29
         50        SEND_VAL                                                 ~41
         51        DO_ICALL                                         $42     
         52        INIT_FCALL                                               'floor'
         53        DIV                                              ~43     !6, 28
         54        SEND_VAL                                                 ~43
         55        DO_ICALL                                         $44     
         56        INIT_FCALL                                               'floor'
         57        DIV                                              ~45     !6, 29
         58        SEND_VAL                                                 ~45
         59        DO_ICALL                                         $46     
         60        SUB                                              ~47     $44, $46
         61        INIT_FCALL                                               'floor'
         62        DIV                                              ~48     !5, 11
         63        SEND_VAL                                                 ~48
         64        DO_ICALL                                         $49     
         65        MUL                                              ~50     $49, ~47
         66        ADD                                              ~51     $42, ~50
         67        ASSIGN                                                   !7, ~51
   17    68        ADD                                              ~53     21, !6
         69        SUB                                              ~54     ~53, !7
         70        ASSIGN                                                   !8, ~54
   18    71        INIT_FCALL                                               'floor'
         72        DIV                                              ~56     !1, 4
         73        SEND_VAL                                                 ~56
         74        DO_ICALL                                         $57     
         75        ADD                                              ~58     !1, $57
         76        ADD                                              ~59     ~58, !4
         77        MOD                                              ~60     ~59, 7
         78        SUB                                              ~61     7, ~60
         79        ASSIGN                                                   !9, ~61
   19    80        SUB                                              ~63     !8, !9
         81        MOD                                              ~64     ~63, 7
         82        SUB                                              ~65     7, ~64
         83        ASSIGN                                                   !10, ~65
   20    84        ADD                                              ~67     !8, !10
         85        ASSIGN                                                   !11, ~67
   22    86        INIT_FCALL                                               'mktime'
         87        SEND_VAL                                                 0
         88        SEND_VAL                                                 0
         89        SEND_VAL                                                 0
         90        SEND_VAL                                                 3
         91        SEND_VAR                                                 !11
         92        SEND_VAR                                                 !1
         93        DO_ICALL                                         $69     
         94        VERIFY_RETURN_TYPE                                       $69
         95      > RETURN                                                   $69
   23    96*       VERIFY_RETURN_TYPE                                       
         97*     > RETURN                                                   null

End of Dynamic Function 0

Class Holiday:
Function isholiday:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/fnj67
function name:  isHoliday
number of ops:  20
compiled vars:  !0 = $date, !1 = $holidays
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   60     0  E >   RECV                                             !0      
   62     1        INIT_STATIC_METHOD_CALL                                  'getHolidays'
          2        SEND_VAR_EX                                              !0
          3        DO_FCALL                                      0  $2      
          4        ASSIGN                                                   !1, $2
   64     5        INIT_METHOD_CALL                                         !0, 'format'
          6        SEND_VAL_EX                                              'Y-m-d'
          7        DO_FCALL                                      0  $4      
          8        INIT_FCALL                                               'array_flip'
          9        INIT_METHOD_CALL                                         !0, 'format'
         10        SEND_VAL_EX                                              'Y'
         11        DO_FCALL                                      0  $5      
         12        FETCH_DIM_R                                      ~6      !1, $5
         13        SEND_VAL                                                 ~6
         14        DO_ICALL                                         $7      
         15        ARRAY_KEY_EXISTS                                 ~8      $4, $7
         16        VERIFY_RETURN_TYPE                                       ~8
         17      > RETURN                                                   ~8
   65    18*       VERIFY_RETURN_TYPE                                       
         19*     > RETURN                                                   null

End of function isholiday

Function isworkday:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 11, Position 2 = 12
Branch analysis from position: 11
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 12
2 jumps found. (Code = 43) Position 1 = 16, Position 2 = 17
Branch analysis from position: 16
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 17
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/fnj67
function name:  isWorkDay
number of ops:  20
compiled vars:  !0 = $date
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   67     0  E >   RECV                                             !0      
   69     1        INIT_FCALL                                               'in_array'
          2        INIT_METHOD_CALL                                         !0, 'format'
          3        SEND_VAL_EX                                              'N'
          4        DO_FCALL                                      0  $1      
          5        SEND_VAR                                                 $1
          6        FETCH_STATIC_PROP_R          unknown             ~2      'workingDays'
          7        SEND_VAL                                                 ~2
          8        DO_ICALL                                         $3      
          9        BOOL_NOT                                         ~4      $3
         10      > JMPZ                                                     ~4, ->12
   70    11    > > RETURN                                                   <false>
   72    12    >   INIT_STATIC_METHOD_CALL                                  'isHoliday'
         13        SEND_VAR                                                 !0
         14        DO_FCALL                                      0  $5      
         15      > JMPZ                                                     $5, ->17
   73    16    > > RETURN                                                   <false>
   76    17    > > RETURN                                                   <true>
   77    18*       VERIFY_RETURN_TYPE                                       
         19*     > RETURN                                                   null

End of function isworkday

Function countweekdays:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 4, Position 2 = 5
Branch analysis from position: 4
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 5
2 jumps found. (Code = 77) Position 1 = 34, Position 2 = 41
Branch analysis from position: 34
2 jumps found. (Code = 78) Position 1 = 35, Position 2 = 41
Branch analysis from position: 35
2 jumps found. (Code = 43) Position 1 = 39, Position 2 = 40
Branch analysis from position: 39
1 jumps found. (Code = 42) Position 1 = 34
Branch analysis from position: 34
Branch analysis from position: 40
Branch analysis from position: 41
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 41
filename:       /in/fnj67
function name:  countWeekDays
number of ops:  44
compiled vars:  !0 = $from, !1 = $to, !2 = $interval, !3 = $period, !4 = $days, !5 = $date
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
   87     0  E >   RECV                                             !0      
          1        RECV_INIT                                        !1      null
   89     2        TYPE_CHECK                                    2          !1
          3      > JMPZ                                                     ~6, ->5
   90     4    > > RETURN                                                   null
   96     5    >   CLONE                                            ~7      !0
          6        ASSIGN                                                   !0, ~7
   97     7        INIT_METHOD_CALL                                         !0, 'setTime'
          8        SEND_VAL_EX                                              0
          9        SEND_VAL_EX                                              0
         10        SEND_VAL_EX                                              0
         11        DO_FCALL                                      0          
   98    12        CLONE                                            ~10     !1
         13        ASSIGN                                                   !1, ~10
   99    14        INIT_METHOD_CALL                                         !1, 'setTime'
         15        SEND_VAL_EX                                              0
         16        SEND_VAL_EX                                              0
         17        SEND_VAL_EX                                              0
         18        DO_FCALL                                      0          
  100    19        NEW                                              $13     'DateInterval'
         20        SEND_VAL_EX                                              'P1D'
         21        DO_FCALL                                      0          
         22        ASSIGN                                                   !2, $13
  101    23        INIT_METHOD_CALL                                         !1, 'add'
         24        SEND_VAR_EX                                              !2
         25        DO_FCALL                                      0          
  102    26        NEW                                              $17     'DatePeriod'
         27        SEND_VAR_EX                                              !0
         28        SEND_VAR_EX                                              !2
         29        SEND_VAR_EX                                              !1
         30        DO_FCALL                                      0          
         31        ASSIGN                                                   !3, $17
  104    32        ASSIGN                                                   !4, 0
  106    33      > FE_RESET_R                                       $21     !3, ->41
         34    > > FE_FETCH_R                                               $21, !5, ->41
  107    35    >   INIT_STATIC_METHOD_CALL                                  'isWorkDay'
         36        SEND_VAR                                                 !5
         37        DO_FCALL                                      0  $22     
         38      > JMPZ                                                     $22, ->40
  108    39    >   PRE_INC                                                  !4
  106    40    > > JMP                                                      ->34
         41    >   FE_FREE                                                  $21
  112    42      > RETURN                                                   !4
  113    43*     > RETURN                                                   null

End of function countweekdays

Function countweekdaysinmonthtodate:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/fnj67
function name:  countWeekDaysInMonthToDate
number of ops:  27
compiled vars:  !0 = $month, !1 = $year, !2 = $today, !3 = $d1, !4 = $d2
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  123     0  E >   RECV                                             !0      
          1        RECV                                             !1      
  125     2        NEW                                              $5      'DateTimeImmutable'
          3        DO_FCALL                                      0          
          4        ASSIGN                                                   !2, $5
  126     5        INIT_METHOD_CALL                                         !2, 'setDate'
          6        SEND_VAR_EX                                              !1
          7        SEND_VAR_EX                                              !0
          8        SEND_VAL_EX                                              1
          9        DO_FCALL                                      0  $8      
         10        ASSIGN                                                   !3, $8
  127    11        INIT_METHOD_CALL                                         !3, 'modify'
         12        SEND_VAL_EX                                              'last+day+of+this+month'
         13        DO_FCALL                                      0  $10     
         14        ASSIGN                                                   !4, $10
  129    15        INIT_STATIC_METHOD_CALL                                  'countWeekDays'
         16        SEND_VAR                                                 !3
         17        INIT_FCALL                                               'min'
         18        SEND_VAR                                                 !4
         19        SEND_VAR                                                 !2
         20        DO_ICALL                                         $12     
         21        SEND_VAR                                                 $12
         22        DO_FCALL                                      0  $13     
         23        VERIFY_RETURN_TYPE                                       $13
         24      > RETURN                                                   $13
  130    25*       VERIFY_RETURN_TYPE                                       
         26*     > RETURN                                                   null

End of function countweekdaysinmonthtodate

Function geteaster:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/fnj67
function name:  getEaster
number of ops:  16
compiled vars:  !0 = $date
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  137     0  E >   RECV                                             !0      
  139     1        NEW                                              $1      'DateTimeImmutable'
          2        DO_FCALL                                      0          
          3        INIT_METHOD_CALL                                         $1, 'setTimestamp'
          4        INIT_FCALL_BY_NAME                                       'easter_date'
          5        INIT_METHOD_CALL                                         !0, 'format'
          6        SEND_VAL_EX                                              'Y'
          7        DO_FCALL                                      0  $3      
          8        SEND_VAR_NO_REF_EX                                       $3
          9        DO_FCALL                                      0  $4      
         10        SEND_VAR_NO_REF_EX                                       $4
         11        DO_FCALL                                      0  $5      
         12        VERIFY_RETURN_TYPE                                       $5
         13      > RETURN                                                   $5
  140    14*       VERIFY_RETURN_TYPE                                       
         15*     > RETURN                                                   null

End of function geteaster

Function getholidays:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 5, Position 2 = 9
Branch analysis from position: 5
2 jumps found. (Code = 77) Position 1 = 23, Position 2 = 74
Branch analysis from position: 23
2 jumps found. (Code = 78) Position 1 = 24, Position 2 = 74
Branch analysis from position: 24
2 jumps found. (Code = 43) Position 1 = 31, Position 2 = 32
Branch analysis from position: 31
1 jumps found. (Code = 42) Position 1 = 23
Branch analysis from position: 23
Branch analysis from position: 32
2 jumps found. (Code = 77) Position 1 = 36, Position 2 = 72
Branch analysis from position: 36
2 jumps found. (Code = 78) Position 1 = 37, Position 2 = 72
Branch analysis from position: 37
2 jumps found. (Code = 43) Position 1 = 41, Position 2 = 46
Branch analysis from position: 41
1 jumps found. (Code = 42) Position 1 = 64
Branch analysis from position: 64
1 jumps found. (Code = 42) Position 1 = 36
Branch analysis from position: 36
Branch analysis from position: 46
2 jumps found. (Code = 43) Position 1 = 52, Position 2 = 60
Branch analysis from position: 52
1 jumps found. (Code = 42) Position 1 = 64
Branch analysis from position: 64
Branch analysis from position: 60
1 jumps found. (Code = 42) Position 1 = 36
Branch analysis from position: 36
Branch analysis from position: 72
1 jumps found. (Code = 42) Position 1 = 23
Branch analysis from position: 23
Branch analysis from position: 72
Branch analysis from position: 74
2 jumps found. (Code = 43) Position 1 = 81, Position 2 = 99
Branch analysis from position: 81
2 jumps found. (Code = 77) Position 1 = 83, Position 2 = 98
Branch analysis from position: 83
2 jumps found. (Code = 78) Position 1 = 84, Position 2 = 98
Branch analysis from position: 84
2 jumps found. (Code = 43) Position 1 = 88, Position 2 = 90
Branch analysis from position: 88
1 jumps found. (Code = 42) Position 1 = 83
Branch analysis from position: 83
Branch analysis from position: 90
Branch analysis from position: 98
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 98
Branch analysis from position: 99
Branch analysis from position: 74
Branch analysis from position: 9
filename:       /in/fnj67
function name:  getHolidays
number of ops:  103
compiled vars:  !0 = $start, !1 = $relativeHolidays, !2 = $period, !3 = $date, !4 = $year, !5 = $relativeHoliday, !6 = $holidayDate, !7 = $holidays, !8 = $dates
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
  147     0  E >   RECV                                             !0      
  149     1        BIND_STATIC                                              !1
  163     2        INSTANCEOF                                       ~9      !0, 'DateTimeImmutable'
          3        BOOL_NOT                                         ~10     ~9
          4      > JMPZ                                                     ~10, ->9
  165     5    >   INIT_STATIC_METHOD_CALL                                  'DateTimeImmutable', 'createFromMutable'
          6        SEND_VAR                                                 !0
          7        DO_FCALL                                      0  $11     
          8        ASSIGN                                                   !0, $11
  168     9    >   INIT_METHOD_CALL                                         !0, 'modify'
         10        SEND_VAL_EX                                              'first+day+of+this+year'
         11        DO_FCALL                                      0  $13     
         12        ASSIGN                                                   !0, $13
  171    13        NEW                                              $15     'DatePeriod'
         14        SEND_VAR_EX                                              !0
         15        NEW                                              $16     'DateInterval'
         16        SEND_VAL_EX                                              'P1Y'
         17        DO_FCALL                                      0          
         18        SEND_VAR_NO_REF_EX                                       $16
         19        SEND_VAL_EX                                              0
         20        DO_FCALL                                      0          
         21        ASSIGN                                                   !2, $15
  172    22      > FE_RESET_R                                       $20     !2, ->74
         23    > > FE_FETCH_R                                               $20, !3, ->74
  173    24    >   INIT_METHOD_CALL                                         !3, 'format'
         25        SEND_VAL_EX                                              'Y'
         26        DO_FCALL                                      0  $21     
         27        ASSIGN                                                   !4, $21
  174    28        FETCH_STATIC_PROP_R          unknown             ~23     'observableHolidays'
         29        ARRAY_KEY_EXISTS                                         !4, ~23
         30      > JMPZ                                                     ~24, ->32
  175    31    > > JMP                                                      ->23
  177    32    >   FETCH_STATIC_PROP_W          unknown             $25     'observableHolidays'
         33        ASSIGN_DIM                                               $25, !4
         34        OP_DATA                                                  <array>
  178    35      > FE_RESET_R                                       $27     !1, ->72
         36    > > FE_FETCH_R                                               $27, !5, ->72
  179    37    >   INIT_FCALL                                               'is_callable'
         38        SEND_VAR                                                 !5
         39        DO_ICALL                                         $28     
         40      > JMPZ                                                     $28, ->46
  180    41    >   INIT_DYNAMIC_CALL                                        !5
         42        SEND_VAR_EX                                              !3
         43        DO_FCALL                                      0  $29     
         44        ASSIGN                                                   !6, $29
  179    45      > JMP                                                      ->64
  181    46    >   INIT_FCALL                                               'strpos'
         47        SEND_VAR                                                 !5
         48        SEND_VAL                                                 'P'
         49        DO_ICALL                                         $31     
         50        IS_IDENTICAL                                             $31, 0
         51      > JMPZ                                                     ~32, ->60
  182    52    >   INIT_METHOD_

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
199.36 ms | 1014 KiB | 25 Q