Implementando horário de funcionamento em PHP
Neste artigo, o autor apresenta um passo a passo ensinando a usar uma biblioteca da Spatie para implementar um horário de funcionamento na linguagem PHP.
Fala, pessoal! Tudo bom?
Continuando a série de artigos sobre bibliotecas legais escritas em PHP↳PHP44 conteúdosPadronizando seu código com PHP CS FixerDev (Back & Front) · mai 2019Docker de imagem. Para rodar projetos PHP em menos de 30 segundosDev (Back & Front) · jan 2026PHP 7.3: conheça as novidades desta versãoDev (Back & Front) · abr 2019Ver tudo em Dev (Back & Front) →, 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!











