È passato un po’ di tempo da quando ho scritto su PHP Zmanim — il lavoro che ho svolto con esso e le cose che ho imparato durante l’implementazione. Ma nonostante il ritardo, ho sempre avuto l’intenzione di continuare la conversazione. Ed è quello che stiamo facendo oggi.
Nel mio primo post, ho spiegato come installare e iniziare con la libreria PHP Zmanim. Poi, nel post successivo, ho approfondito il calcolo di tempi più complessi e il vero potere dello strumento — applicando le opinioni rabbiniche più comuni per vari zmanim. Riprendo da dove avevo lasciato con un minimo di sovrapposizione, quindi se hai bisogno di un attimo per riprendere la situazione, ho inserito i link a quei post precedenti.
L’obiettivo di oggi è esplorare utilizzi di PHP Zmanim che vanno oltre l’uso relativamente diretto della libreria. Ciò include:
- Prendere un’ora standard e adattarla per casi d’uso specifici della sinagoga (“Mincha inizia 25 minuti prima dello Shkia ogni giorno”).
- Utilizzare le funzioni e i metodi della libreria PHP Zmanim che forniscono calcoli non temporali — come la Porzione Settimanale della Torah, la data ebraica e se una data specificata è una festa (come Rosh Chodesh o Sukkot).
Riconoscimenti
Ancora una volta, devo iniziare esprimendo la mia gratitudine alle persone che hanno reso tutto questo possibile. Innanzitutto, tra una lunga lista di nomi c’è Zachary Weixelbaum, il responsabile della libreria PHP Zmanim stessa, e Eliyahu Hershfeld, creatore della libreria Kosher Java su cui si basa PHP Zmanim.
Un Breve Rinfresco
Quando ci siamo interrotti, avevamo uno script PHP di base solido che:
- Imposta le variabili per la posizione (in latitudine/longitudine), insieme al fuso orario e all’altitudine.
- Imposta la data
- Crea un oggetto zmanim di php da quelle variabili
- Utilizza i metodi integrati per calcolare l’ora di tutto, dall’alba alla mincha al tzeit hakochavim
Così sembrava:
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";
Ma l’alba è solo l’inizio. Utilizzando uno qualsiasi dei calcoli integrati (che sono descritti sulla pagina GitHub ReadMe), è possibile estrarre una vasta varietà di orari. Ad esempio, per ottenere Mincha Gedola utilizzando una specifica opinione rabbinica, potrei includere:
$gedolah = $zmanim->minchaGedola16Point1Degrees
Nell’ultimo blog, ho anche illustrato modi per utilizzare il metodo di formattazione di PHP Zmanim per rendere l’output più leggibile:
$gedolah = $gedolah->format('g:i a');
“Sale quanto basta” — Regolazione degli Orari
Per coloro che non trascorrono molto tempo in sinagoga (nessuna colpa, nessuna vergogna, siete comunque i benvenuti qui) potrebbe non essere ovvio, ma — nonostante il nome dello zman — pochissime organizzazioni recitano la Mincha (preghiere pomeridiane) alla Mincha Ketana, Mincha Gedola o Plag haMincha.
In realtà, gran parte del lavoro relativo al calcolo dei tempi ha meno a che fare con il semplice “a che ora è la Mincha Gedola?” e più con “fino a che punto nel corso della giornata possiamo ragionevolmente pianificare la Mincha in modo che tutti abbiano il tempo di arrivare dopo il lavoro; ma non troppo tardi da scoraggiare la partecipazione perché si perderebbe la cena?”
Se questo è troppo teorico, permettetemi di condividere il puzzle logico di jenga che la mia sinagoga considera quando stabilisce il programma settimanale:
- Accensione delle candele del venerdì sera: Shkia (tramonto) meno 18 minuti
- Mincha del venerdì estivo: Plag haMincha (usando “plagHaminchaAteretTorah”) meno 20 minuti
- Mincha del venerdì invernale: Shkia (tramonto) meno 22 minuti
- Mincha del sabato: Shkia meno 40 minuti
- Ma’ariv del sabato: Shkia più 50 minuti
- Fine dello Shabbat del sabato: Shkia più 45 minuti
- Mincha nei giorni feriali: trovare il tramonto più precoce della settimana, quindi sottrarre 17 minuti
Anche se tutti gli altri orari che ho trattato nei post precedenti sono comunque importanti, spero che stiate iniziando a capire che hanno meno importanza di quanto ci si potrebbe aspettare.
Quindi, come fai a prendere un orario (come shkia/tramonto) e poi aggiungere o sottrarre minuti? Iniziamo con lo stesso script che avevamo prima:
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);
Ad esso, aggiungeremo il codice per ottenere il tramonto:
$sunset = $zmanim->sunset;
E poi, sottrarremo 18 minuti per ottenere l’orario di accensione delle candele:
$candles = date('g:i a', strtotime($sunset . " -18 minutes"));
Esatto. Devi solo usare la funzione di stringa in tempo di PHP. Mi dispiace se ti ho tenuto in sospeso. Ma è veramente così facile.
Qual è la Porzione della Torah? Qual è la Data Ebraica? Quando è Rosh Chodesh?
(…e altre domande essenziali ma fastidiose spesso poste dentro e intorno alla tua sinagoga.)
Insieme ai calcoli delle date, la libreria KosherJava (e quindi la libreria PHP Zmanim) ha metodi e funzioni per fornire rapidamente informazioni come quelle richieste sopra.
La prima cosa da capire è che l’oggetto PHP Zmanim con cui abbiamo lavorato finora è stato un oggetto Zmanim — un oggetto che ha un insieme di orari specifici per una data particolare. Per le cose che riguardano le date stesse, istanziamo un oggetto jewishCalendar
. La buona notizia è che è molto più facile da creare. Tutto ciò di cui hai bisogno è l’anno, il mese e il giorno.
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));
Ora abbiamo un oggetto jewishCalendar
con cui lavorare e possiamo usare metodi simili a quelli che abbiamo trovato per gli orari. Ad esempio, presumendo che la data selezionata fosse un sabato, possiamo ottenere la porzione della Torah:
$format = Zmanim::format();
$parshaeng = json_decode('"' . $format->formatParsha($jewishCalendar) . '"');
(Ignora per ora l’impostazione $format
. Ci addentreremo in questo tra poco).
Se esegui quel codice, $parshaeng
ti darebbe:
Parshas Ki Savo
Noterai che non abbiamo dovuto fornire la latitudine, la longitudine, il fuso orario, ecc. Non posso enfatizzare abbastanza che questa capacità da sola – la capacità di ottenere date, porzioni della Torah e altro — rende la libreria PHP Zmanim utile da sola, anche senza i calcoli temporali.
Posso averlo in ebraico?
La porzione della Torah? Certo! Qui entra in gioco la linea $format
.
Innanzitutto, una spiegazione di cosa sia: è un metodo che modifica oggetti come Zmanim e jewishCalendar
, impostando le opzioni di visualizzazione e output. Impostando Zmanim::format()
senza altre informazioni predefinito in inglese. Ma poi puoi dire al sistema che desideri l’ebraico con questa linea aggiuntiva:
$format->setHebrewFormat(true)
Ora, se esegui la stessa linea json_decode('"' . $format->formatParsha($jewishCalendar) . '"')
, otterresti:
כי תבוא
Mettendo tutto insieme:
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";
Questo visualizzerebbe: כי תבוא – Ki Savo.
Che giorno è?
Più specificamente, che giorno EBRAICO è?
Come nell’esempio precedente, iniziamo con un jewishCalendar
e un oggetto di formato.
$jewishCalendar = Zmanim::jewishCalendar(Carbon::createFromDate($theyear, $themonth, $theday));
$format = Zmanim::format();
Poi, aggiungiamo la stessa riga per impostare il formato all’ebraico.
$format->setHebrewFormat(true);
E infine (e piuttosto semplicemente), chiediamo un output diretto dell’oggetto calendario:
$zmandate = json_decode('"' . $format->format($jewishCalendar) . '"');
È letteralmente tutto ciò di cui hai bisogno. Il risultato è qualcosa del genere:
17 Elul, 5784
Sì, anche se abbiamo specificato setHebrewFormat
, è uscito in inglese.
Posso averlo in ebraico effettivo?
Per ottenere la data ebraica visualizzata completamente in ebraico — sia le parole che le lettere — invochiamo un metodo leggermente diverso chiamato, in modo appropriato, HebrewDateFormatter
.
Premettendo (ancora una volta) che hai impostato le tue variabili iniziali e creato un oggetto jewishCalendar
, il codice per visualizzare una data in lingua ebraica sarebbe:
$hebformat = HebrewDateFormatter::create();
$hebformat->setHebrewFormat(true);
$hebdate = json_decode('"' . $hebformat->format($jewishCalendar) . '"');
print("Hebrew date: $hebdate\n");
Il che ti darebbe:
Hebrew date: י״ח אלול תשפ״ד
Oggi è il giorno?
A volte è necessario verificare se una data specifica è… beh, un giorno specifico come Rosh Chodesh (il nuovo mese) o parte di una festività plurigiornaliera (come Sukkot).
Sembra che il metodo PHP Zmanim renda questo molto semplice. Presumendo di aver iniziato nello stesso modo degli altri esempi, una volta impostato l’oggetto jewishCalendar
, è semplice come:
$jewishCalendar->isRoshHashana();
$jewishCalendar->isSuccos();
Se la data corrisponde alla festività, restituirà “true” e potrai procedere con qualsiasi logica o processo desideri, come ad esempio visualizzare la data (o meno).
E quindi, cosa c’è di nuovo?
Credi o no, c’è ancora altro da trattare. Nelle prossime settimane Quando arriverò a farlo, mi piacerebbe coprire modi per sfruttare le funzioni di astronomia integrate per calcoli temporali. Credi o no, può davvero avere importanza in termini di avere tempi veramente precisi per cose come l’inizio e la fine dello Shabbat e delle festività, insieme ad altre osservanze.
Nel frattempo, se c’è qualcos’altro che ti piacerebbe che affrontassi o se hai domande, correzioni o complimenti, sentiti libero di lasciarli nei commenti qui sotto.
Source:
https://dzone.com/articles/time-data-series-the-rest-of-the-story