crtl / openings
This package provides basic functionality to determine openings such as shop or restaurant openings.
1.1.0
2019-12-11 09:13 UTC
Requires
- php: >=5.4
Requires (Dev)
- phpunit/phpunit: ^6.0
This package is auto-updated.
Last update: 2025-03-11 20:39:50 UTC
README
This package provides basic functionality to determine openings such as shop or restaurant openings.
Features
- Provide openings in an easy array syntax
- Handle exceptional openings such als holidays, christmas etc.
Installation
composer require crtl/openings
Examples / Usage
Format
Openings and opening exceptions must have the following format:
[ "key" => ["H:i-H:i", "H:i-H:i"], "key1, key1 , keyN" => ["H:i-H:i"], "key-key" => ["H:i-H:i"] ]
Where key is one of the following date formats:
D
for openingsY/m/d
for opening exceptions
Usage
<?php use Crtl\Openings\OpeningsManager; use Crtl\Openings\Exceptions\InvalidFormatException; require_once(__DIR__ . "/vendor/autoload.php"); //Define openings $openings = [ "Mon-Fri" => ["08:00-12:00", "14:30-19:00"], "Sat" => ["10:00-16:00"], "Sun" => [] //Closed, you can also asign any other false value ]; //Define opening exceptions $exceptions = [ "2017/12/24-2018/01/01" => [], //Closed from 2017/12/24 to 2018/01/01 "2018/01/02" => ["10:00-14:00"] ]; //Create instance try { $openingsManager = new OpeningsManager($openings, $exceptions); } catch (InvalidFormatException $ex) { die($ex->getMessage()); //Invalid format supplied either for keys or values } $openingsManager->isOpen() //same as $openingsManager->isOpen(new DateTime()); $openingsManager->isOpen($myDateTime); $date = new \DateTime("2017-12-24 10:00:00"); $openingsManager->isOpen($date) $nextWeek = new \DateTime("09:00:00"); $nextWeek->add(new \DateInterval("P1W")); $openingsManager->isOpen($nextWeek);