crtl/openings

此包提供了确定如商店或餐馆开业等开业的基礎功能。

1.1.0 2019-12-11 09:13 UTC

This package is auto-updated.

Last update: 2024-09-11 19:35:55 UTC


README

此包提供了确定如商店或餐馆开业等开业的基礎功能。

功能

  • 以簡單的數組語法提供開業信息
  • 處理特別開業,如節假日、聖誕節等。

安裝

composer require crtl/openings

示例/用法

格式

開業和開業異常必須符合以下格式

[
    "key" => ["H:i-H:i", "H:i-H:i"],
    "key1, key1 , keyN" => ["H:i-H:i"],
    "key-key" => ["H:i-H:i"]
]

其中 key 是以下日期格式之一

  • D 表示開業
  • Y/m/d 表示開業異常

用法

<?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);