public function avoidFutileMedicalCare($numberOfFailures = 6, $inAmountOfTime = 60)
{
$this->checkIfTerminallyIll = function ($reanimationPolicy) use($numberOfFailures, $inAmountOfTime) {
$failuresInTime = [];
return function () use(&$failuresInTime, $reanimationPolicy, $numberOfFailures, $inAmountOfTime) {
$failuresInTime[] = time();
if (count($failuresInTime) > $numberOfFailures) {
$failuresInTime = array_slice($failuresInTime, 1);
}
if (count($failuresInTime) === $numberOfFailures) {
if ($failuresInTime[count($failuresInTime) - 1] - $failuresInTime[0] < $inAmountOfTime) {
return false;
}
}
return call_user_func_array($reanimationPolicy, func_get_args());
};
};
return $this;
}