В календаре содержится информация о выходных, сокращенных и празднечных днях. Календарь состоит из данных в формате JSON и обработчика. Обработчик позволяет узнать является ли дата выходным днем.
Подключаем class Calendar
namespace Calendar; include_once('calendar.php'); $calendar = new Calendar;
setDay( *string $format [, int $timestamp = time() ]* )
Дата $format устанавливается в формате date
PHP. Например, $calendar->setDay("2017-02-22");
По-умолчанию устанавливается сегоднящний день.
setCalendarDir( string $dir )
По-умолчанию директория установлена как ./data/russian/
.
$calendar->isHoliday()
Метод возвращает true
, если в установленный день (setDay) есть праздник.
$calendar->isPreHoliday()
Метод возвращает true
, если установленный день (setDay) сокращен на час.
getHolidayDescription()
Возвращает string для установленной даты. Если данные о названии праздника отсутствуют, метод возвращает фразу "Выходной день".
Класс определён (см. Подключение обработчика)
echo "Сегодня "; if ( $calendar->isHoliday() ) { echo "выходной (" . $calendar->getHolidayDescription() . ")"; } elseif ( $calendar->isPreHoliday() ) { echo "сокращенный день"; } else { echo "рабочий день"; }
$calendar->setDay("2017-02-23"); echo "23 февраля, 2017 "; if ( $calendar->isHoliday() ) { echo "выходной (" . $calendar->getHolidayDescription() . ")"; } elseif ( $calendar->isPreHoliday() ) { echo "сокращенный день"; } else { echo "рабочий день"; }
Календари могут хранится в любой директории. Для установки директории используйте метод setCalendarDir()
.
Имя файла календаря должно соотвествовать году для календаря {год}.json (например, "2017.json", "2018.json").
{ "January": { "1-6": { "rest": true, "n": "Новый год" }, "7": {"rest": true, "n": "Рождество Христово"} }, "June": { "10": {"rest": false}, "12": {"rest": true, "n": "День России"} } }
Месяц записывается в формате PHP date date("F");
(от January до December).
Дни могут записываться в формате диапазона "1-6". В качестве разделителя используется знак минус -
.
Для дня или диапазона дней возможны два варианта обозначения: выходной день или сокращенный день. Выходной день обозначается присваиванием значения true к объекту rest для текущего дня или диапазона дней. Сокращенный же день обозначается присваиваем значения false.
Например, запись "rest": true
обзначает, что в этот день (или диапазон дней) выходной, а запись "rest": false
говорит о том, что рабочий день сокращен на один час.
Объект n
(от note) используется для описания праздника. Если объект n
для выходного дня отсутвует программа по-умолчанию присвоит значение Выходной день.
Программа распространяется по лицензии MIT.