#php
#php
Вопрос:
Я использую следующий PHP-код, чтобы получить предстоящую дату данного дня. Например, если день указан во «Вторник», он выведет 01-09-2020. Функция предназначена для отображения предстоящих дат продажи смартфонов.
$saledate = "Tuesday"
date_default_timezone_set('Asia/Kolkata');
function dayDate($day) {
return new DateTime('next ' . $day);
}
$nextsale = dayDate($saledate);
if(!empty($saledate)) {
echo "Next Flash Sale on $saledate ";
echo $nextsale->format('d-m-Y'); // 01-09-2020
}
Проблема в том, что если $saledate
пусто, это приводит к тому, что вся веб-страница не загружается. В чем может быть проблема?
Это то, что говорит журнал ошибок
[25-Aug-2020 18:47:15 Asia / Kolkata] Неустранимая ошибка PHP: неперехваченная ошибка: вызов неопределенной функции DayDate() в /home /customer/www/sitename.com/public_html/index.php: 1114 Трассировка стека: #0 {main} введено /home/customer/www/sitename.com/public_html/index.php в строке 1114
Обновление: Исправлено путем добавления $nextsale = dayDate($saledate);
внутри блока if.
Комментарии:
1. Какая строка в этом коде является строкой 1114?
$nextsale = dayDate($saledate);
? Это внутри класса?2. Поместите
$nextsale = dayDate($saledate);
внутрь защищенного блока (if
).3. Эта ошибка не соответствует упомянутой вами проблеме, если вы не определяете только,
dayDate()
если$salesdate
не является пустым, но пытаетесь вызвать его независимо. Я вижу, какnew DateTime('next ' . $day)
происходит сбой и выдает фатальное значение, если$day
оно пустое, хотя, поскольку только наличиеnext
недопустимого формата.4. Возможно, вы захотите использовать IDE / редактор с подсветкой синтаксиса и проверкой ошибок, что может помочь точно определить проблему. Вы пропускаете точку с запятой в первой строке, но, учитывая номер строки в вашем сообщении об ошибке, у меня такое ощущение, что в коде больше, чем здесь, что может быть причиной проблемы.
5. @kerbh0lz строка 1114 — это
return new DateTime('next ' . $day);
, да, она находится внутри класса. Если вы опубликуете это как ответ, я пометлю это как решение.