Я работаю над функцией планирования для обработки повторяющихся событий в приложении. Один из вариантов - «Каждый первый рабочий день» (месяца). У меня есть функция, которая работает, но я боюсь, что не могу использовать самый эффективный метод и надеялся на какой-то ввод. Я использую PHP 5.5. Это код, который у меня есть:Тестирование на первый рабочий день месяца в PHP
function isFirstWeekday($dateObject){
$dayToTest = $dateObject->format('l');
$monthToTest = $dateObject->format('F Y');
$priorDay = clone $dateObject;
$priorDay->modify('- 1 day');
$weekdayList = array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday");
//Return false if it's not a weekday
if (!in_array($dateObject->format('l'), $weekdayList)) {
return FALSE;
}
//Make sure that this weekday is the first of its name in the month
if ($dateObject->format('Y-m-d') !== date('Y-m-d', strtotime("first $dayToTest of $monthToTest"))) {
return FALSE;
}
//Make sure that the day before was not a weekday in the same month
if (in_array($priorDay->format('l'), $weekdayList) && $priorDay->format('m') === $dateObject->format('m')) {
return FALSE;
}
return TRUE;
}
Это намного менее интенсивный процессор. Я не понимал, что условные возвращения там, где есть опция. Я изучал PHP всего год, и мне это просто не приходило в голову. Я не могу проверить, пока не вернусь в офис в понедельник, но посмотрев документацию и подумав, что это выглядит великолепно. Спасибо! – resident0