Já faz um tempo desde que escrevi sobre o PHP Zmanim — o trabalho que fiz com ele e as coisas que aprendi ao implementá-lo. Mas apesar do atraso, sempre tive a intenção de continuar a conversa. É isso que estamos fazendo hoje.
No meu primeiro post, expliquei como instalar e começar a usar a biblioteca PHP Zmanim. Depois, no próximo post, aprofundei-me no cálculo de horários mais complexos e no verdadeiro poder da ferramenta — aplicando as opiniões rabínicas mais comuns para vários zmanim. Estou continuando de onde parei com o mínimo de sobreposição, então se precisar de um minuto para se atualizar, linkei para esses posts anteriores.
O objetivo hoje é explorar os usos do PHP Zmanim que vão além do uso relativamente direto da biblioteca. Isso inclui:
- Tomar um horário padrão e ajustá-lo para casos de uso específicos da sinagoga (“Minchá começa 25 minutos antes do Shkia todos os dias”).
- Usar funções e métodos da biblioteca PHP Zmanim que fornecem cálculos não relacionados a horários — como a Porção Semanal da Torá, a data hebraica e se uma data especificada é um feriado (como Rosh Chodesh ou Sucot).
Agradecimentos
Mais uma vez, eu preciso começar expressando minha gratidão às pessoas que tornaram tudo isso possível. Em primeiro lugar, entre uma longa lista de nomes está Zachary Weixelbaum, o mantenedor da biblioteca PHP Zmanim em si, e Eliyahu Hershfeld, criador da biblioteca Kosher Java na qual o PHP Zmanim se baseia.
Um Breve Lembrete
Quando paramos, tínhamos um script PHP básico sólido que:
- Define variáveis para a localização (em latitude/longitude), juntamente com o fuso horário e a elevação.
- Define a data
- Cria um objeto php zmanim a partir dessas variáveis
- Utiliza os métodos internos para calcular o horário de tudo, desde o nascer do sol até mincha até tzeit hakochavim
Isso se parecia com isso:
require 'vendor/autoload.php';
use PhpZmanim\Zmanim;
use PhpZmanim\Calendar\ComplexZmanimCalendar;
use PhpZmanim\Geo\GeoLocation;
# Set variables:
$locname = "Beit Knesset Chochmat Shlomo, Beachwood, OH";
$lat = 41.4939407;
$long = -81.516709;
$elev = 0;
$tz = 'America/New_York';
$getyear = 2024;
$getday = 20;
$getmonth = 12;
$testzmanim = Zmanim::create($getyear, $getmonth, $getday, $locname, $lat, $long, $elev, $tz);
$sunrise = $testzmanim->sunrise;
echo "$sunrise\n";
Mas o nascer do sol é apenas o começo. Usando qualquer um dos cálculos integrados (que estão descritos na página ReadMe do GitHub), você pode obter uma ampla variedade de horários. Por exemplo, para obter Mincha Gedola usando uma opinião rabínica específica, eu poderia incluir:
$gedolah = $zmanim->minchaGedola16Point1Degrees
No último blog, também abordei maneiras de usar o método de formatação do PHP Zmanim para tornar a saída mais legível:
$gedolah = $gedolah->format('g:i a');
“Ajustando os Horários” — Ajustando Horários
Para aqueles que não passam muito tempo na sinagoga (sem culpa, sem vergonha, você ainda é bem-vindo aqui) pode não ser óbvio, mas — apesar do nome do zman — muito poucas organizações rezam Minchá (orações da tarde) em Minchá Ketana, Minchá Gedola, ou Plag haMinchá.
Na verdade, grande parte do trabalho em relação ao cálculo dos horários tem menos a ver com o simples “que horas é a Minchá Gedola?” e mais com “até que horas do dia podemos agendar razoavelmente a Minchá para que todos tenham tempo de chegar depois do trabalho; mas não tão tarde que ninguém venha porque vai perder o jantar?”
Se isso for muito teórico, permita-me compartilhar o quebra-cabeça lógico que minha sinagoga considera ao definir o cronograma semanal:
- Acendimento de velas na sexta à noite: Shkia (pôr do sol) menos 18 minutos
- Minchá de sexta-feira no verão: Plag haMinchá (usando “plagHaminchaAteretTorah”) menos 20 minutos
- Minchá de sexta-feira no inverno: Shkia (pôr do sol) menos 22 minutos
- Minchá de sábado: Shkia menos 40 minutos
- Ma’ariv de sábado: Shkia mais 50 minutos
- Fim do Shabat de sábado: Shkia mais 45 minutos
- Minchá de dia de semana: encontrar o shkia mais cedo da semana, e então subtrair 17 minutos
Enquanto todos os outros horários que cobri em blogs anteriores ainda importam, esperançosamente, você está começando a perceber que eles importam menos frequentemente do que se poderia esperar.
Então, como você pega um horário (como shkia/pôr do sol) e depois adiciona ou subtrai minutos? Vamos começar com o mesmo script que tínhamos antes:
require 'vendor/autoload.php';
use PhpZmanim\Zmanim;
use PhpZmanim\Calendar\ComplexZmanimCalendar;
use PhpZmanim\Geo\GeoLocation;
# Set variables:
$locname = "Beit Knesset Chochmat Shlomo, Beachwood, OH";
$lat = 41.4939407;
$long = -81.516709;
$elev = 0;
$tz = 'America/New_York';
$getyear = 2024;
$getday = 20;
$getmonth = 12;
$testzmanim = Zmanim::create($getyear, $getmonth, $getday, $locname, $lat, $long, $elev, $tz);
Para isso, vamos adicionar o código para obter o pôr do sol:
$sunset = $zmanim->sunset;
E então, vamos subtrair 18 minutos para obter o horário de acendimento das velas:
$candles = date('g:i a', strtotime($sunset . " -18 minutes"));
Isso mesmo. Basta usar a função de string para hora do PHP. Desculpe se te deixei em suspense. Mas é realmente tão fácil assim.
Qual é a Porção da Torá? Qual é a Data em Hebraico? Quando é Rosh Chodesh?
(…e outras perguntas essenciais, mas desconcertantes, frequentemente feitas em sua sinagoga.)
Junto com cálculos de data, a biblioteca KosherJava (e, portanto, a biblioteca PHP Zmanim) possui métodos e funções para fornecer rapidamente informações como as solicitadas acima.
A primeira coisa a entender é que o objeto Zmanim do PHP com o qual estávamos trabalhando até agora foi um objeto Zmanim – um objeto que possui um conjunto de horários específicos para uma determinada data. Para coisas envolvendo as próprias datas, instanciamos um objeto jewishCalendar
. A boa notícia é que é muito mais fácil de criar. Tudo o que você precisa é o ano, mês e dia.
require 'vendor/autoload.php';
use PhpZmanim\Zmanim;
use PhpZmanim\Calendar\ComplexZmanimCalendar;
use PhpZmanim\Geo\GeoLocation;
# Set variables:
$getyear = 2024;
$getday = 21;
$getmonth = 09;
$jewishCalendar = Zmanim::jewishCalendar(Carbon::createFromDate($getyear, $getmonth, $getday));
Agora temos um objeto jewishCalendar
para trabalhar e podemos usar métodos semelhantes aos que encontramos para os horários. Por exemplo, presumindo que a data selecionada fosse um sábado, podemos obter a Porção da Torá:
$format = Zmanim::format();
$parshaeng = json_decode('"' . $format->formatParsha($jewishCalendar) . '"');
(Ignore a configuração $format
por enquanto. Vamos explorar isso em breve).
Se você executasse esse código, $parshaeng
lhe daria:
Parshas Ki Savo
Você notará que não precisávamos fornecer latitude, longitude, fuso horário, etc. Não posso enfatizar o suficiente que essa capacidade sozinha – a habilidade de obter datas, porções da Torá e mais — torna a biblioteca PHP Zmanim útil por si só, mesmo sem os cálculos de tempo.
Posso obter isso em Hebraico?
A Porção da Torá? Claro! É aqui que a linha $format
entra em cena.
Primeiro, uma explicação do que é: É um método que modifica objetos como Zmanim e jewishCalendar
, definindo as opções de exibição e saída. Definir Zmanim::format()
sem nenhuma outra informação padrão fica em Inglês. Mas então você pode dizer ao sistema que deseja Hebraico com esta linha adicional:
$format->setHebrewFormat(true)
Agora, se você executar a mesma linha json_decode(‘”‘ . $format->formatParsha($jewishCalendar) . ‘”‘)
, você obteria:
כי תבוא
Colocando tudo junto:
require 'vendor/autoload.php';
use PhpZmanim\Zmanim;
use PhpZmanim\Calendar\ComplexZmanimCalendar;
use PhpZmanim\Geo\GeoLocation;
# Set variables:
$getyear = 2024;
$getday = 21;
$getmonth = 09;
$jewishCalendar = Zmanim::jewishCalendar(Carbon::createFromDate($getyear, $getmonth, $getday));
$format = Zmanim::format();
$parshaeng = json_decode('"' . $format->formatParsha($jewishCalendar) . '"');
$format->setHebrewFormat(true);
$parshaheb = json_decode('"' . $format->formatParsha($jewishCalendar) . '"');
echo "$parshaheb - $parshaeng\n";
Isso exibiria: כי תבוא – Ki Savo.
Que dia é hoje?
Mais especificamente, que dia em HEBRAICO é hoje?
Assim como no exemplo anterior, começamos com um jewishCalendar
e um objeto de formato.
$jewishCalendar = Zmanim::jewishCalendar(Carbon::createFromDate($theyear, $themonth, $theday));
$format = Zmanim::format();
Então, adicionamos a mesma linha para definir o formato em Hebraico.
$format->setHebrewFormat(true);
E finalmente (e de forma bastante simples), pedimos uma saída de objeto de calendário direto:
$zmandate = json_decode('"' . $format->format($jewishCalendar) . '"');
Isso é literalmente tudo que você precisa. O resultado é algo como isto:
17 Elul, 5784
Sim, mesmo que tenhamos especificado setHebrewFormat
, ele saiu em Inglês.
Posso obter isso em Hebraico real?
Para fazer com que a data hebraica seja exibida completamente em hebraico — tanto palavras quanto letras —, invocamos um método ligeiramente diferente chamado, apropriadamente, HebrewDateFormatter
.
Presumindo (mais uma vez) que você configurou suas variáveis iniciais e criou um objeto jewishCalendar
, o código para exibir uma data em hebraico seria:
$hebformat = HebrewDateFormatter::create();
$hebformat->setHebrewFormat(true);
$hebdate = json_decode('"' . $hebformat->format($jewishCalendar) . '"');
print("Hebrew date: $hebdate\n");
O que resultaria em:
Hebrew date: י״ח אלול תשפ״ד
Hoje é o Dia?
Às vezes você precisa verificar se uma data específica é… bem, um dia específico como Rosh Chodesh (o novo mês) ou parte de um feriado de vários dias (como Sukkot).
Descobre-se que o método PHP Zmanim torna isso muito simples. Presumindo que você começou da mesma forma que nos outros exemplos, uma vez que você configurou o objeto jewishCalendar
, é tão simples quanto:
$jewishCalendar->isRoshHashana();
$jewishCalendar->isSuccos();
Se a data corresponder ao feriado, ele retornará “true” e você poderá prosseguir com a lógica ou processo desejado, como exibir a data (ou não).
E agora, o que vem a seguir?
Acredite ou não, ainda há mais para cobrir. Nas próximas semanas, sempre que eu chegar a isso, gostaria de abordar maneiras de aproveitar as funções de astronomia integradas para cálculos de tempo. Acredite ou não, pode ser realmente importante em termos de ter horários verdadeiramente precisos para coisas como o início e o fim do Shabat e feriados, junto com outras observâncias.
Enquanto isso, se houver algo mais que você gostaria que eu abordasse ou se tiver perguntas, correções ou elogios, sinta-se à vontade para deixá-los nos comentários abaixo.
Source:
https://dzone.com/articles/time-data-series-the-rest-of-the-story