1 | <?php |
||
16 | trait SupportsUptimeCheck |
||
17 | { |
||
18 | public static function bootSupportsUptimeCheck() |
||
19 | { |
||
20 | static::saving(function (Monitor $monitor) { |
||
21 | if (is_null($monitor->uptime_status_last_change_date)) { |
||
22 | $monitor->uptime_status_last_change_date = Carbon::now(); |
||
23 | |||
24 | return; |
||
25 | } |
||
26 | |||
27 | if ($monitor->getOriginal('uptime_status') != $monitor->uptime_status) { |
||
28 | $monitor->uptime_status_last_change_date = Carbon::now(); |
||
29 | } |
||
30 | }); |
||
31 | } |
||
32 | |||
33 | public function shouldCheckUptime() : bool |
||
34 | { |
||
35 | if (! $this->uptime_check_enabled) { |
||
|
|||
36 | return false; |
||
37 | } |
||
38 | |||
39 | if ($this->uptime_status == UptimeStatus::NOT_YET_CHECKED) { |
||
40 | return true; |
||
41 | } |
||
42 | |||
43 | if ($this->uptime_status == UptimeStatus::DOWN) { |
||
44 | return true; |
||
45 | } |
||
46 | |||
47 | if (is_null($this->uptime_last_check_date)) { |
||
48 | return true; |
||
49 | } |
||
50 | |||
51 | return $this->uptime_last_check_date->diffInMinutes() >= $this->uptime_check_interval_in_minutes; |
||
52 | } |
||
53 | |||
54 | public function uptimeRequestSucceeded(ResponseInterface $response) |
||
55 | { |
||
56 | $uptimeResponseChecker = app(UptimeResponseChecker::class); |
||
57 | |||
58 | if (! $uptimeResponseChecker->isValidResponse($response, $this)) { |
||
59 | $this->uptimeCheckFailed($uptimeResponseChecker->getFailureReason($response, $this)); |
||
60 | |||
61 | return; |
||
62 | } |
||
63 | |||
64 | $this->uptimeCheckSucceeded(); |
||
65 | } |
||
66 | |||
67 | public function uptimeRequestFailed(string $reason) |
||
71 | |||
72 | public function uptimeCheckSucceeded() |
||
95 | |||
96 | public function uptimeCheckFailed(string $reason) |
||
97 | { |
||
98 | $this->uptime_status = UptimeStatus::DOWN; |
||
115 | |||
116 | protected function shouldFireUptimeCheckFailedEvent(): bool |
||
136 | } |
||
137 |
In PHP it is possible to write to properties without declaring them. For example, the following is perfectly valid PHP code:
Generally, it is a good practice to explictly declare properties to avoid accidental typos and provide IDE auto-completion: