3v4l.org

run code in 300+ PHP versions simultaneously
<?php use App\Models\User; use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Log; it('returns users with exactly $daysLeft days left, hour-precise', function () { $graceDays = 30; $daysLeft = 7; $now = now(); $users = []; for ($hour = 0; $hour < 24; $hour++) { $user = User::factory()->make([ 'email' => "exact_hour_{$hour}@example.net", ]); $user->forceFill([ // deleted_at = now - (graceDays - daysLeft) 'deleted_at' => $now->copy() ->subDays($graceDays) ->addDays($daysLeft) ->setHour($hour) ->setMinute(0) ->setSecond(0), ])->save(); $users[] = $user; } $outsideUser = User::factory()->make([ 'email' => "outside@example.net", ]); $outsideUser->forceFill([ 'deleted_at' => $now->copy()->subDays($graceDays - $daysLeft - 1), ])->save(); $result = User::deletionGraceImpending($daysLeft, true)->pluck('id'); foreach ($users as $user) { expect($result)->toContain($user->id); } expect($result)->not->toContain($outsideUser->id); });
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename:       /in/aeaA4
function name:  (null)
number of ops:  6
compiled vars:  none
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    7     0  E >   INIT_FCALL_BY_NAME                                       'it'
          1        SEND_VAL_EX                                              'returns+users+with+exactly+%24daysLeft+days+left%2C+hour-precise'
          2        DECLARE_LAMBDA_FUNCTION                          ~0      [0]
   45     3        SEND_VAL_EX                                              ~0
    7     4        DO_FCALL                                      0          
   45     5      > RETURN                                                   1


Dynamic Functions:
Dynamic Function 0
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 44
Branch analysis from position: 44
2 jumps found. (Code = 44) Position 1 = 46, Position 2 = 8
Branch analysis from position: 46
2 jumps found. (Code = 77) Position 1 = 74, Position 2 = 84
Branch analysis from position: 74
2 jumps found. (Code = 78) Position 1 = 75, Position 2 = 84
Branch analysis from position: 75
1 jumps found. (Code = 42) Position 1 = 74
Branch analysis from position: 74
Branch analysis from position: 84
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 84
Branch analysis from position: 8
2 jumps found. (Code = 44) Position 1 = 46, Position 2 = 8
Branch analysis from position: 46
Branch analysis from position: 8
filename:       /in/aeaA4
function name:  {closure}
number of ops:  95
compiled vars:  !0 = $graceDays, !1 = $daysLeft, !2 = $now, !3 = $users, !4 = $hour, !5 = $user, !6 = $outsideUser, !7 = $result
line      #* E I O op                           fetch          ext  return  operands
-------------------------------------------------------------------------------------
    8     0  E >   ASSIGN                                                   !0, 30
    9     1        ASSIGN                                                   !1, 7
   10     2        INIT_FCALL_BY_NAME                                       'now'
          3        DO_FCALL                                      0  $10     
          4        ASSIGN                                                   !2, $10
   11     5        ASSIGN                                                   !3, <array>
   13     6        ASSIGN                                                   !4, 0
          7      > JMP                                                      ->44
   14     8    >   INIT_STATIC_METHOD_CALL                                  'App%5CModels%5CUser', 'factory'
          9        DO_FCALL                                      0  $14     
         10        INIT_METHOD_CALL                                         $14, 'make'
   15    11        ROPE_INIT                                     3  ~16     'exact_hour_'
         12        ROPE_ADD                                      1  ~16     ~16, !4
         13        ROPE_END                                      2  ~15     ~16, '%40example.net'
         14        INIT_ARRAY                                       ~18     ~15, 'email'
         15        SEND_VAL_EX                                              ~18
   14    16        DO_FCALL                                      0  $19     
         17        ASSIGN                                                   !5, $19
   18    18        INIT_METHOD_CALL                                         !5, 'forceFill'
   20    19        INIT_METHOD_CALL                                         !2, 'copy'
         20        DO_FCALL                                      0  $21     
   21    21        INIT_METHOD_CALL                                         $21, 'subDays'
         22        SEND_VAR_EX                                              !0
         23        DO_FCALL                                      0  $22     
   22    24        INIT_METHOD_CALL                                         $22, 'addDays'
         25        SEND_VAR_EX                                              !1
         26        DO_FCALL                                      0  $23     
   23    27        INIT_METHOD_CALL                                         $23, 'setHour'
         28        SEND_VAR_EX                                              !4
         29        DO_FCALL                                      0  $24     
   24    30        INIT_METHOD_CALL                                         $24, 'setMinute'
         31        SEND_VAL_EX                                              0
         32        DO_FCALL                                      0  $25     
   25    33        INIT_METHOD_CALL                                         $25, 'setSecond'
         34        SEND_VAL_EX                                              0
         35        DO_FCALL                                      0  $26     
         36        INIT_ARRAY                                       ~27     $26, 'deleted_at'
         37        SEND_VAL_EX                                              ~27
   18    38        DO_FCALL                                      0  $28     
   26    39        INIT_METHOD_CALL                                         $28, 'save'
         40        DO_FCALL                                      0          
   28    41        ASSIGN_DIM                                               !3
         42        OP_DATA                                                  !5
   13    43        PRE_INC                                                  !4
         44    >   IS_SMALLER                                               !4, 24
         45      > JMPNZ                                                    ~32, ->8
   31    46    >   INIT_STATIC_METHOD_CALL                                  'App%5CModels%5CUser', 'factory'
         47        DO_FCALL                                      0  $33     
         48        INIT_METHOD_CALL                                         $33, 'make'
   32    49        SEND_VAL_EX                                              <array>
   31    50        DO_FCALL                                      0  $34     
         51        ASSIGN                                                   !6, $34
   34    52        INIT_METHOD_CALL                                         !6, 'forceFill'
   35    53        INIT_METHOD_CALL                                         !2, 'copy'
         54        DO_FCALL                                      0  $36     
         55        INIT_METHOD_CALL                                         $36, 'subDays'
         56        SUB                                              ~37     !0, !1
         57        SUB                                              ~38     ~37, 1
         58        SEND_VAL_EX                                              ~38
         59        DO_FCALL                                      0  $39     
         60        INIT_ARRAY                                       ~40     $39, 'deleted_at'
         61        SEND_VAL_EX                                              ~40
   34    62        DO_FCALL                                      0  $41     
   36    63        INIT_METHOD_CALL                                         $41, 'save'
         64        DO_FCALL                                      0          
   38    65        INIT_STATIC_METHOD_CALL                                  'App%5CModels%5CUser', 'deletionGraceImpending'
         66        SEND_VAR_EX                                              !1
         67        SEND_VAL_EX                                              <true>
         68        DO_FCALL                                      0  $43     
         69        INIT_METHOD_CALL                                         $43, 'pluck'
         70        SEND_VAL_EX                                              'id'
         71        DO_FCALL                                      0  $44     
         72        ASSIGN                                                   !7, $44
   40    73      > FE_RESET_R                                       $46     !3, ->84
         74    > > FE_FETCH_R                                               $46, !5, ->84
   41    75    >   INIT_FCALL_BY_NAME                                       'expect'
         76        SEND_VAR_EX                                              !7
         77        DO_FCALL                                      0  $47     
         78        INIT_METHOD_CALL                                         $47, 'toContain'
         79        CHECK_FUNC_ARG                                           
         80        FETCH_OBJ_FUNC_ARG                               $48     !5, 'id'
         81        SEND_FUNC_ARG                                            $48
         82        DO_FCALL                                      0          
   40    83      > JMP                                                      ->74
         84    >   FE_FREE                                                  $46
   44    85        INIT_FCALL_BY_NAME                                       'expect'
         86        SEND_VAR_EX                                              !7
         87        DO_FCALL                                      0  $50     
         88        FETCH_OBJ_R                                      ~51     $50, 'not'
         89        INIT_METHOD_CALL                                         ~51, 'toContain'
         90        CHECK_FUNC_ARG                                           
         91        FETCH_OBJ_FUNC_ARG                               $52     !6, 'id'
         92        SEND_FUNC_ARG                                            $52
         93        DO_FCALL                                      0          
   45    94      > RETURN                                                   null

End of Dynamic Function 0

Generated using Vulcan Logic Dumper, using php 8.0.0


preferences:
142.08 ms | 1008 KiB | 13 Q