Back-End

14 set, 2018

Implementando horário de funcionamento em PHP

Publicidade

Fala, pessoal! Tudo bom?

Continuando a série de artigos sobre bibliotecas legais escritas em PHP, hoje eu irei trazer mais uma biblioteca da Spatie! Uma biblioteca muito interessante para implementar uma funcionalidade que certos negócios podem precisar em seus sistemas: o horário de funcionamento do negócio.

Suponha que você esteja fazendo um site institucional e queira avisar ao usuário se a empresa está aberta ou não naquele momento. Com a spatie/opening-hours, em poucas linhas de código você pode implementar essa funcionalidade.

Vamos ao código!

Crie uma pasta para este exemplo: opening e depois dê um composer require:

composer require spatie/opening-hours

Depois vamos criar um arquivo de exemplo opening.php com o código abaixo:

<?php

require_once 'vendor/autoload.php';

use Spatie\OpeningHours\OpeningHours; //carregando a classe OpeningHours
$openingHours = OpeningHours::create([ //criando uma instância de OpeningHours
    'monday' => ['08:00-12:00', '13:00-20:00'], //definindo o horário de funcionamento padrão na segunda
    'tuesday' => ['08:00-12:00', '13:00-20:00'], //definindo o horário de funcionamento padrão na terça
    'wednesday' => ['08:00-12:00', '13:00-20:00'], //definindo o horário de funcionamento padrão na quarta
    'thursday' => ['08:00-12:00', '13:00-20:00'], //definindo o horário de funcionamento padrão na quinta
    'friday' => ['08:00-12:00', '13:00-20:00'], //definindo o horário de funcionamento padrão na sexta
    'saturday' => [], //definindo o horário de funcionamento padrão no sábado
    'sunday' => [], //definindo o horário de funcionamento padrão no domingo
    'exceptions' => [
        '2018-06-22' => ['13:00-20:00'], //definindo uma excessão no dia do jogo do Brasil na copa
        '2018-09-15' => ['09:00-18:00'], //definindo uma excessão em dia de evento.
        '01-01' => [], //definindo uma excessão no feriado de ano novo
        '12-25' => [], //definindo uma excessão no feriado de natal
    ],
]);

//testando alguns horários

var_dump($openingHours->isOpenOn('monday')); // validando se funciona por padrão na segunda (true)
var_dump($openingHours->isOpenOn('sunday')); // validando se funciona por padrão no domingo (false)
var_dump($openingHours->isOpenAt(new DateTime('2018-09-15 20:01:00'))); // validando se está funcionando no dia 15 de setembro de 2018 às 20:01 (false)
var_dump($openingHours->isOpenAt(new DateTime('2019-01-01'))); //validando se está funcionando no dia 01 de janeiro  (false);
var_dump($openingHours->forDay('wednesday')); //verificando o horário de funcionamento padrão as quartas
var_dump($openingHours->nextOpen(new DateTime('2018-01-01 10:00:00'))); //verificando o próximo horário de abertura depois do dia primeiro de janeiro

Em seguida é só rodar:

php opening.php

Espero que a biblioteca facilite a criação de sites institucionais ou outros sistemas que precisem de implementação de horário de funcionamento.

Até a próxima, galera!