• Час читання ~1 хв
  • 08.10.2023

Opening Hours — це пакет PHP від Spatie для запиту та форматування набору робочих годин. Ви можете використовувати його, щоб представити час на день і включити винятки для таких речей, як свята та інші вихідні дні в певну дату певного року або повторювані (відбуваються щороку). Readme файл проекту має цей приклад, щоб проілюструвати, як ви можете налаштувати години:

$openingHours = OpeningHours::create([
    'monday'     => ['09:00-12:00', '13:00-18:00'],
    'tuesday'    => ['09:00-12:00', '13:00-18:00'],
    'wednesday'  => ['09:00-12:00'],
    'thursday'   => ['09:00-12:00', '13:00-18:00'],
    'friday'     => ['09:00-12:00', '13:00-20:00'],
    'saturday'   => ['09:00-12:00', '13:00-16:00'],
    'sunday'     => [],
    'exceptions' => [
        '2016-11-11' => ['09:00-12:00'],
        '2016-12-25' => [],
        '01-01'      => [],                // Recurring on each 1st of January
        '12-25'      => ['09:00-12:00'],   // Recurring on each 25th of December
    ],
]);
// This will allow you to display things like:
$now = new DateTime('now');
$range = $openingHours->currentOpenRange($now);

if ($range) {
    echo "It's open since ".$range->start()."\n";
    echo "It will close at ".$range->end()."\n";
} else {
    echo "It's closed since ".$openingHours->previousClose($now)->format('l H:i')."\n";
    echo "It will re-open at ".$openingHours->nextOpen($now)->format('l H:i')."\n";
}

Цей пакет має безліч параметрів конфігурації і може бути використаний на будь-якому PHP-проекті без будь-яких залежностей. Хоча цей пакет не є абсолютно новим пакетом Spatie, ми ніколи не розглядали його і вважаємо, що вам варто його перевірити! Ви можете отримати інструкції з налаштування та переглянути більше прикладів API на GitHub за посиланням spatie/opening-hours.

Якщо ви хочете дізнатися більше довідкової інформації про те, чому цей пакет був створений, Фрік Ван дер Хертен спочатку написав про це у своєму блозі: Управління годинами роботи за допомогою PHP.

Comments

No comments yet
Yurij Finiv

Yurij Finiv

Full stack

Про мене

Professional Fullstack Developer with extensive experience in website and desktop application development. Proficient in a wide range of tools and technologies, including Bootstrap, Tailwind, HTML5, CSS3, PUG, JavaScript, Alpine.js, jQuery, PHP, MODX, and Node.js. Skilled in website development using Symfony, MODX, and Laravel. Experience: Contributed to the development and translation of MODX3 i...

Про автора CrazyBoy49z
WORK EXPERIENCE
Контакти
Ukraine, Lutsk
+380979856297