Здравствуйте!
Никак не могу понять где ошибаюсь.
Пишу метод который выдаст последний рабочий день от текущей даты. То есть если например сегодня 7 января, метод должен вернуть 30 декабря 21 года.
И у меня почти получилось, однако:
Метод
lastWorkingDay возвращает null. Самое странное при этом в том что если вместо
return $day; ставлю
var_dump($day); то в переменной $day лежит string 2021-12-31 почему тогда return null?
Сам код lastWorkingDay
public static function lastWorkingDay($day)
{
$date = new DateTime();
$date->modify($day . '-1 day');
$day = $date->format('Y-m-d');
$weekend = static::is_weekend($day);
if ($weekend === false) {
return $day;
}
static::lastWorkingDay($day);
}
И код is_weekend
public static function is_weekend($date)
{
$d = explode('-', $date);
$url = 'http://xmlcalendar.ru/data/ru/' . $d[0] . '/calendar.json';
$data = json_decode(file_get_contents($url));
$m = (int) $d[1] - 1;
$weekends = explode(',', $data->months[$m]->days);
if (in_array($d[2], $weekends)) {
return true;
}
return false;
}
Дата приходит в формате Y-m-d (2022-01-07)
Помогите найти ошибку.