Почему рекурсивная функция stati c работает не так, как ожидалось? - PullRequest
0 голосов
/ 01 мая 2020

Функция ниже должна вернуться на следующий рабочий день. Принимает во внимание праздники и выходные. Проблема в странном поведении в конце (см. Изображение ниже кода)

class test{

   private static $i;
   static function getNextWorkingDay(DateTimeInterface $dateTime) {
        self::$i++;
        dump("Iteration n°: ".self::$i. " Date: ".$dateTime->format('d/m/Y'));

        $dateTime = (new DateTime())->setTimestamp($dateTime->getTimestamp());
        if (self::isWeekend($dateTime)) {
            dump("Iteration n°: ".self::$i." Weekend");
            self::getNextWorkingDay($dateTime->modify('next monday'));
        }
        if (self::isNotWorkable($dateTime)) {
            dump("Iteration n°: ".self::$i." Not workable");
            self::getNextWorkingDay($dateTime->modify('next day'));
        }


        dump("Iteration n°: ".self::$i. " This date should be returned and end the function: ".$dateTime->format('d/m/Y'));


        return $dateTime;
    }
}


Тестирование с датой = 2020-05-01

Я ожидаю 2020-05 -04 но возвращается 2020-05-02

...