Het is al een tijdje geleden dat ik schreef over PHP Zmanim — het werk dat ik ermee heb gedaan en de dingen die ik heb geleerd tijdens de implementatie ervan. Maar ondanks de vertraging, was het altijd mijn bedoeling om het gesprek voort te zetten. Dat is wat we vandaag gaan doen.
In mijn eerste bericht legde ik uit hoe je de PHP Zmanim-bibliotheek kunt installeren en aan de slag kunt gaan. Vervolgens dook ik in het volgende bericht in het berekenen van complexere tijden en de echte kracht van de tool — waarbij de meest voorkomende rabbinale opinies worden toegepast voor verschillende zmanim. Ik pak de draad op waar ik was gebleven met minimaal overlap, dus als je even de tijd moet nemen om weer op snelheid te komen, heb ik gelinkt naar die eerdere berichten.
Het doel van vandaag is om toepassingen van PHP Zmanim te verkennen die verder gaan dan het relatief eenvoudige gebruik van de bibliotheek. Dat omvat:
- Een standaardtijd nemen en aanpassen voor specifieke synagogegevallen (“Mincha begint elke dag 25 minuten voor Shkia”).
- Het gebruik van PHP Zmanim-bibliotheekfuncties en -methoden die niet-tijdsberekeningen bieden — zoals de wekelijkse Torah-afdeling, de Hebreeuwse datum, en of een opgegeven datum een feestdag is (zoals Rosh Chodesh of Sukkot).
Erkenningen
Nogmaals, ik moet beginnen met mijn dank uit te spreken aan de mensen die dit allemaal mogelijk hebben gemaakt. Voorop staat een lange lijst namen, waaronder Zachary Weixelbaum, de beheerder van de PHP Zmanim-bibliotheek zelf, en Eliyahu Hershfeld, de maker van de Kosher Java-bibliotheek waarop PHP Zmanim is gebaseerd.
Een Snelle Opfrisser
Toen we de vorige keer eindigden, hadden we een solide basis PHP-script dat:
- Variabelen instelt voor de locatie (in breedte- en lengtegraad), samen met de tijdzone en hoogte.
- De datum instelt
- Een php zmanim-object maakt van die variabelen
- De ingebouwde methoden gebruikt om de tijd te berekenen voor alles van zonsopgang tot mincha tot tzeit hakochavim
Het zag er zo uit:
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";
Maar de zonsopgang is slechts het begin. Met behulp van een van de ingebouwde berekeningen (die beschreven worden op de GitHub ReadMe-pagina), kun je een breed scala aan tijden opvragen. Bijvoorbeeld, om Mincha Gedola te krijgen volgens een specifieke Rabbijnse opinie, zou ik het volgende kunnen opnemen:
$gedolah = $zmanim->minchaGedola16Point1Degrees
In de laatste blog behandelde ik ook manieren om de format-methode van PHP Zmanim te gebruiken om de uitvoer leesbaarder te maken:
$gedolah = $gedolah->format('g:i a');
“Zout naar Smaak” — Tijden Aanpassen
Voor degenen die niet veel tijd doorbrengen in de synagoge (geen blaam, geen schaamte, je bent nog steeds welkom hier) is het misschien niet voor de hand liggend, maar — ondanks de naam van de zman — bidden maar heel weinig organisaties Mincha (middaggebed) bij Mincha Ketana, Mincha Gedola of Plag haMincha.
In feite heeft veel van het werk met betrekking tot het berekenen van tijden minder te maken met de eenvoudige vraag “hoe laat is Mincha Gedola?” en meer met “hoe laat op de dag kunnen we redelijkerwijs Mincha plannen zodat iedereen tijd heeft om hier na het werk te komen; maar niet zo laat dat niemand komt omdat ze anders het avondeten missen?”
Als dat te theoretisch is, laat me dan het logische jengapuzzel mijn synagoge delen wanneer ze het wekelijkse schema opstellen:
- Vrijdagavond kaarsen aansteken: Shkia (zonsondergang) minus 18 minuten
- Zomerse vrijdag Mincha: Plag haMincha (met behulp van “plagHaminchaAteretTorah”) minus 20 minuten
- Winterse vrijdag Mincha: Shkia (zonsondergang) minus 22 minuten
- Shabbat Mincha: Shkia minus 40 minuten
- Shabbat Ma’ariv: Shkia plus 50 minuten
- Shabbat einde: Shkia plus 45 minuten
- Weekdag Mincha: vind de vroegste shkia voor de week, en trek er dan 17 minuten van af
Terwijl alle andere tijden die ik in eerdere blogs heb besproken nog steeds van belang zijn, wordt hopelijk langzamerhand duidelijk dat ze minder vaak van belang zijn dan men zou verwachten.
Dus, hoe neem je een tijd (zoals shkia/zonsondergang) en voeg je vervolgens minuten toe of trek je ze af? We beginnen met hetzelfde script als voorheen:
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);
Daaraan voegen we de code toe om zonsondergang te krijgen:
$sunset = $zmanim->sunset;
En vervolgens trekken we 18 minuten af om de tijd van kaarslicht te krijgen:
$candles = date('g:i a', strtotime($sunset . " -18 minutes"));
Zo is het. Je gebruikt gewoon de eigen string-naar-tijd functie van PHP. Het spijt me als ik je in spanning heb gehouden. Maar het is echt zo eenvoudig.
Wat is het Torah-gedeelte? Wat is de Hebreeuwse datum? Wanneer is Rosh Chodesh?
(…en andere essentiële maar lastige vragen die vaak worden gesteld in en rondom je synagoge.)
Samen met datum berekeningen heeft de KosherJava-bibliotheek (en dus de PHP Zmanim-bibliotheek) methoden en functies om snel informatie te verstrekken zoals hierboven gevraagd.
Het eerste wat je moet begrijpen is dat het PHP Zmanim-object waarmee we tot nu toe hebben gewerkt een Zmanim-object is — een object dat een set specifieke tijden heeft voor een bepaalde datum. Voor zaken die de datums zelf betreffen, instantiëren we een jewishCalendar
-object. Het goede nieuws is dat het veel makkelijker is om te maken. Alles wat je nodig hebt is het jaar, de maand en de dag.
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));
We hebben nu een jewishCalendar
-object om mee te werken en kunnen methoden gebruiken die vergelijkbaar zijn met degene die we vonden voor tijden. Bijvoorbeeld, veronderstellend dat de geselecteerde datum een zaterdag was, kunnen we het Torah-gedeelte krijgen:
$format = Zmanim::format();
$parshaeng = json_decode('"' . $format->formatParsha($jewishCalendar) . '"');
(Negeer de $format
-instelling voor nu. We zullen er zo meteen dieper op ingaan).
Als je die code zou uitvoeren, zou $parshaeng
je geven:
Parshas Ki Savo
Je zult merken dat we geen breedtegraad, lengtegraad, tijdzone, enz. hoefden te verstrekken. Ik kan niet genoeg benadrukken dat deze mogelijkheid alleen al – het kunnen verkrijgen van data, Torah gedeelten en meer – de PHP Zmanim-bibliotheek op zichzelf al nuttig maakt, zelfs zonder de tijdscalculaties.
Kan ik dat in het Hebreeuws krijgen?
Het Torah-gedeelte? Natuurlijk! Hier komt de regel $format
om de hoek kijken.
Allereerst een uitleg van wat het is: Het is een methode die objecten zoals Zmanim en jewishCalendar
aanpast, instellende weergave- en uitvoeropties. Het instellen van Zmanim::format()
zonder verdere informatie resulteert standaard in het Engels. Maar dan kun je het systeem vertellen dat je Hebreeuws wilt met deze extra regel:
$format->setHebrewFormat(true)
Als je nu dezelfde regel json_decode('" . $format->formatParsha($jewishCalendar) . '"')
uitvoert, krijg je:
כי תבוא
Alles samenvoegen:
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";
Dit zou weergeven: כי תבוא – Ki Savo.
Welke dag is het?
Meer specifiek, welke HEBREEUWSE dag is het?
Net als het vorige voorbeeld beginnen we met een jewishCalendar
en een formaatobject.
$jewishCalendar = Zmanim::jewishCalendar(Carbon::createFromDate($theyear, $themonth, $theday));
$format = Zmanim::format();
Vervolgens voegen we dezelfde regel toe om het formaat in te stellen op Hebreeuws.
$format->setHebrewFormat(true);
En tot slot (en vrij eenvoudig), vragen we om een rechtstreekse kalenderobjectuitvoer:
$zmandate = json_decode('"' . $format->format($jewishCalendar) . '"');
Dat is letterlijk alles wat je nodig hebt. Het resultaat is zoiets als dit:
17 Elul, 5784
Ja, ook al hebben we setHebrewFormat
gespecificeerd, het kwam erin het Engels uit.
Kan ik dat in feitelijk Hebreeuws krijgen?
Om de Hebreeuwse datum volledig in het Hebreeuws weer te geven, — zowel woorden als letters — roepen we een enigszins andere methode aan die, heel toepasselijk, HebrewDateFormatter
wordt genoemd.
Ervan uitgaande (nogmaals) dat je je initiële variabelen hebt ingesteld en een jewishCalendar
object hebt aangemaakt, zou de code om een Hebreeuwse datum weer te geven zijn:
$hebformat = HebrewDateFormatter::create();
$hebformat->setHebrewFormat(true);
$hebdate = json_decode('"' . $hebformat->format($jewishCalendar) . '"');
print("Hebrew date: $hebdate\n");
Dit zou je geven:
Hebrew date: י״ח אלול תשפ״ד
Is Vandaag de Dag?
Soms moet je controleren of een specifieke datum… nou, een specifieke dag is zoals Rosh Chodesh (de nieuwe maand) of deel uitmaakt van een meerdaagse feestdag (zoals Soekot).
Het blijkt dat de PHP Zmanim methode dit heel eenvoudig maakt. Ervan uitgaande dat je op dezelfde manier bent begonnen als bij de andere voorbeelden, zodra je het jewishCalendar
object hebt ingesteld, is het zo simpel als:
$jewishCalendar->isRoshHashana();
$jewishCalendar->isSuccos();
Als de datum overeenkomt met de feestdag, zal het “waar” retourneren, en kun je doorgaan met welke logica of proces je maar wilt, zoals het weergeven van de datum (of niet).
Dus Wat Is Het Vervolg?
Geloof het of niet, er valt nog meer te behandelen. In de komende weken Wanneer ik eraan toekom, zou ik graag manieren willen behandelen om de ingebouwde astronomiefuncties te benutten voor tijdsberekeningen. Geloof het of niet, het kan echt van belang zijn voor het hebben van echt nauwkeurige tijden voor zaken als het begin en einde van de Sjabbat en de feestdagen, samen met andere observaties.
Ondertussen, als er iets anders is dat je graag behandeld wilt zien of als je vragen, correcties of complimenten hebt, voel je vrij om ze hieronder in de reacties achter te laten.
Source:
https://dzone.com/articles/time-data-series-the-rest-of-the-story