2017 © Pedro Peláez
 

library opening-hours

A helper to query and format a set of opening hours, clone of spatie/opening-hours

image

octava/opening-hours

A helper to query and format a set of opening hours, clone of spatie/opening-hours

  • Thursday, October 13, 2016
  • by TheRatG
  • Repository
  • 2 Watchers
  • 0 Stars
  • 373 Installations
  • PHP
  • 0 Dependents
  • 0 Suggesters
  • 43 Forks
  • 0 Open issues
  • 3 Versions
  • 8 % Grown

The README.md

A helper to query and format a set of opening hours

Latest Version on Packagist Software License Build Status SensioLabsInsight Quality Score StyleCI Total Downloads, (*1)

With spatie/opening-hours you create an object that describes a business' opening hours, which you can query for open or closed on days or specific dates, or use to present the times per day., (*2)

A set of opening hours is created by passing in a regular schedule, and a list of exceptions., (*3)

$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' => [],
    ],
]);

The object can be queried for a day in the week, which will return a result based on the regular schedule:, (*4)

// Open on Mondays:
$openingHours->isOpenOn('monday'); // true

// Closed on Sundays:
$openingHours->isOpenOn('sunday'); // false

It can also be queried for a specific date and time:, (*5)

// Closed because it's after hours:
$openingHours->isOpenAt(new DateTime('2016-09-26 19:00:00')); // false

// Closed because Christmas was set as an exception
$openingHours->isOpenAt(new DateTime('2016-12-25')); // false

It can also return arrays of opening hours for a week or a day:, (*6)

// OpeningHoursForDay object for the regular schedule
$openingHours->forDay('monday');

// OpeningHoursForDay[] for the regular schedule, keyed by day name
$openingHours->forWeek();

// OpeningHoursForDay object for a specific day
$openingHours->forDate(new DateTime('2016-12-25'));

// OpeningHoursForDay[] of all exceptions, keyed by date
$openingHours->exceptions();

Read the usage section for the full api., (*7)

Spatie is a webdesign agency based in Antwerp, Belgium. You'll find an overview of all our open source projects on our website., (*8)

Postcardware

You're free to use this package (it's MIT-licensed), but if it makes it to your production environment you are required to send us a postcard from your hometown, mentioning which of our package(s) you are using., (*9)

Our address is: Spatie, Samberstraat 69D, 2060 Antwerp, Belgium., (*10)

The best postcards will get published on the open source page on our website., (*11)

Installation

You can install the package via composer:, (*12)

``` bash composer require spatie/opening-hours, (*13)


## Usage The package should only be used through the `OpeningHours` class. There are also three value object classes used throughout, `Time`, which represents a single time, `TimeRange`, which represents a period with a start and an end, and `openingHoursForDay`, which represents a set of `TimeRange`s which can't overlap. ### `Spatie\OpeningHours\OpeningHours` #### `OpeningHours::create(array $data): Spatie\OpeningHours\OpeningHours` Static factory method to fill the set of opening hours. ``` php $openingHours = OpeningHours::create([ 'monday' => ['09:00-12:00', '13:00-18:00'], // ... ]);

Not all days are mandatory, if a day is missing, it will be set as closed., (*14)

OpeningHours::fill(array $data): Spatie\OpeningHours\OpeningHours

The same as create, but non-static., (*15)

``` php $openingHours = (new OpeningHours)->fill([ 'monday' => ['09:00-12:00', '13:00-18:00'], // ... ]);, (*16)


#### `OpeningHours::forWeek(): Spatie\OpeningHours\OpeningHoursForDay[]` Returns an array of `OpeningHoursForDay` objects for a regular week. ```php $openingHours->forWeek();

OpeningHours::forDay(string $day): Spatie\OpeningHours\OpeningHoursForDay

Returns an OpeningHoursForDay object for a regular day. A day is lowercase string of the english day name., (*17)

$openingHours->forDay('monday');

OpeningHours::forDate(DateTime $dateTime): Spatie\OpeningHours\OpeningHoursForDay

Returns an OpeningHoursForDay object for a specific date. It looks for an exception on that day, and otherwise it returns the opening hours based on the regular schedule., (*18)

$openingHours->forDate(new DateTime('2016-12-25'));

OpeningHours::exceptions(): Spatie\OpeningHours\OpeningHoursForDay[]

Returns an array of all OpeningHoursForDay objects for exceptions, keyed by a Y-m-d date string., (*19)

$openingHours->exceptions();

OpeningHours::isOpenOn(string $day): bool

Checks if the business is op on a day in the regular schedule., (*20)

$openingHours->isOpenOn('saturday');

OpeningHours::isClosedOn(string $day): bool

Checks if the business is closed on a day in the regular schedule., (*21)

$openingHours->isClosedOn('sunday');

OpeningHours::isOpenAt(DateTime $dateTime): bool

Checks if the business is open on a specific day, at a specific time., (*22)

$openingHours->isOpenAt(new DateTime('2016-26-09 20:00'));

OpeningHours::isClosedAt(DateTime $dateTime): bool

Checks if the business is closed on a specific day, at a specific time., (*23)

$openingHours->isClosedAt(new DateTime('2016-26-09 20:00'));

OpeningHours::isOpen(): bool

Checks if the business is open right now., (*24)

$openingHours->isOpen();

OpeningHours::isClosed(): bool

Checks if the business is closed right now., (*25)

$openingHours->isClosed();

Spatie\OpeningHours\OpeningHoursForDay

This class is meant as read-only. It implements ArrayAccess, Countable and IteratorAggregate so you can process the list of TimeRanges in an array-like way., (*26)

Spatie\OpeningHours\TimeRange

Value object describing a period with a start and an end time. Can be casted to a string in a H:i-H:i format., (*27)

Spatie\OpeningHours\Time

Value object describing a single time. Can be casted to a string in a H:i format., (*28)

Changelog

Please see CHANGELOG for more information what has changed recently., (*29)

Testing

bash $ composer test, (*30)

Contributing

Please see CONTRIBUTING for details., (*31)

Security

If you discover any security related issues, please email freek@spatie.be instead of using the issue tracker., (*32)

Credits

About Spatie

Spatie is a webdesign agency based in Antwerp, Belgium. You'll find an overview of all our open source projects on our website., (*33)

License

The MIT License (MIT). Please see License File for more information., (*34)

The Versions

13/10 2016

dev-master

9999999-dev https://github.com/spatie/opening-hours

A helper to query and format a set of opening hours, clone of spatie/opening-hours

  Sources   Download

MIT

The Requires

  • php >=5.5.9

 

The Development Requires

schedule spatie hours opening opening-hours octava

13/10 2016

1.0.3

1.0.3.0 https://github.com/spatie/opening-hours

A helper to query and format a set of opening hours, clone of spatie/opening-hours

  Sources   Download

MIT

The Requires

  • php >=5.5.9

 

The Development Requires

schedule spatie hours opening opening-hours octava

13/10 2016

1.0.2

1.0.2.0 https://github.com/spatie/opening-hours

A helper to query and format a set of opening hours, clone of spatie/opening-hours

  Sources   Download

MIT

The Requires

  • php >=5.5.9

 

The Development Requires

schedule spatie hours opening opening-hours octava