Már egy ideje nem írtam a PHP Zmanimról – a vele végzett munkáról és a megvalósítás során tanult dolgokról. De a késés ellenére mindig folytatni akartam a beszélgetést. Ma ezt csináljuk.
Az első bejegyzésemben elmagyaráztam, hogyan kell telepíteni és elkezdeni a PHP Zmanim könyvtárat. Majd a következő bejegyzésben beleástam magam a bonyolultabb idők kiszámításába, és az eszköz valódi erejébe – a legáltalánosabb rabbinikus vélemények alkalmazásával a különféle zmanimokhoz. Ott folytatom, ahol abbahagytam, minimális átfedéssel, így ha egy percre van szüksége, hogy felgyorsuljon, linkeltem az előző bejegyzéseket.
A mai cél a PHP Zmanim olyan felhasználási területeinek feltárása, amelyek túlmutatnak a könyvtár viszonylag egyszerű használatán. Ez magában foglalja:
Még egyszer azzal kell kezdenem, hogy kifejezem hálámat azoknak az embereknek, akik mindezt lehetővé tették. A nevek hosszú listája között mindenekelőtt Zachary Weixelbaum, magának a PHP Zmanim könyvtárnak a karbantartója, valamint Eliyahu Hershfeld, a PHP Zmanim alapját képező Kosher Java könyvtár alkotója.
Amikor abbahagytuk, volt egy szilárd alap PHP szkriptünk, amely:
Így nézett ki:
<?php 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"; ?>
De a napkelte csak a kezdet. A beépített számítások bármelyikével (amelyek leírása a GitHub readme oldalán található) a legkülönfélébb időkben lehívható. Például ahhoz, hogy Mincha Gedola egy konkrét rabbinikus véleményt használjon, a következőket tehetem:
$gedolah = $zmanim->minchaGedola16Point1Degrees
Az utolsó blogban kitértem arra is, hogyan használhatjuk a PHP Zmanim formázási módszerét a kimenet olvashatóbbá tételére:
$gedolah = $gedolah->format('g:i a');
Azok számára, akik nem töltenek sok időt a zsinagógában (nem hibáztatni, nem szégyellni, még mindig szívesen látunk itt), ez talán nem egyértelmű, de – a zman neve ellenére – nagyon kevés szervezet imádkozik Minchához (délután). imák) Mincha Ketanában, Mincha Gedolában vagy Plag haMinchában.
Valójában az időszámítással kapcsolatos munka nagy része kevésbé kapcsolódik az egyenes „Mi az idő Mincha Gedola?” kérdéshez. és még több: „Milyen későre tudjuk ésszerűen ütemezni Minchát, hogy mindenkinek legyen ideje ideérni munka után; de nem OLYAN későn, hogy senki ne jöjjön el, mert lemarad a vacsoráról?
Ha ez túl elméleti, engedje meg, hogy megosszam azt a logikai jenga-rejtvényt, amelyet a zsinagógám figyelembe vesz a heti menetrend felállításakor:
Bár az összes többi alkalom, amelyről a korábbi blogokban beszéltem, továbbra is számít, remélhetőleg kezdi felismerni, hogy ezek ritkábban számítanak, mint azt várnánk.
Tehát hogyan kell időt (például shkia/sunset), majd hozzáadni vagy kivonni perceket? Ugyanazzal a szkripttel kezdjük, mint korábban:
<?php 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);
Ehhez hozzáadjuk a naplemente lekéréséhez szükséges kódot:
$sunset = $zmanim->sunset;
Ezután levonjuk a 18 percet, hogy megkapjuk a gyertyagyújtási időt:
$candles = date('g:i a', strtotime($sunset . " -18 minutes"));
így van. Csak használja a PHP saját string-to-time függvényét. Sajnálom, ha bizonytalanságban tartottalak. De ez tényleg ilyen egyszerű.
(…és más lényeges, de bosszantó kérdések, amelyeket gyakran feltesznek a zsinagógában és környékén.)
A dátumszámítások mellett a KosherJava könyvtár (és így a PHP Zmanim könyvtár) olyan módszereket és funkciókat is tartalmaz, amelyekkel gyorsan szolgáltathat információkat, mint amilyeneket fent kérdeztünk.
Az első dolog, amit meg kell érteni, hogy a PHP Zmanim objektum, amellyel eddig dolgoztunk, egy Zmanim objektum volt – egy olyan objektum, amelynek meghatározott időpontjai vannak egy adott dátumhoz. Magukat a dátumokat tartalmazó dolgoknál egy jewishCalendar objektumot készítünk. A jó hír az, hogy SOKKAL könnyebb létrehozni. Csak az évre, hónapra és napra van szüksége.
<?php 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));
Most már van egy jewishCalendar objektum, amellyel dolgozhatunk, és hasonló módszereket használhatunk, mint amilyeneket régen találtunk. Például: Feltételezve, hogy a kiválasztott dátum szombat volt, megkaphatjuk a Tóra részt:
$format = Zmanim::format(); $parshaeng = json_decode('"' . $format->formatParsha($jewishCalendar) . '"');
(Egyelőre figyelmen kívül hagyja a $formátum beállítást. Egy kicsit beleásunk).
Ha lefuttatta ezt a kódot, a $parshaeng a következőket adná:
Parshas Ki Savo
Észre fogja venni, hogy nem kellett megadnunk a szélességi, hosszúsági fokokat, időzónát stb. Nem tudom eléggé hangsúlyozni, hogy ez a képesség önmagában – a dátumok, a Tóra-részletek és egyebek lekérése – hasznossá teszi a PHP Zmanim könyvtárát. saját, időszámítások nélkül is.
A Tóra-rész? Természetesen! Itt jön be a $formátum sor.
Először is, annak magyarázata, hogy mi ez: Ez egy olyan módszer, amely módosítja az olyan objektumokat, mint a Zmanim és a jewishCalendar, beállítva a megjelenítési és kimeneti beállításokat. A Zmanim::format() beállítása minden egyéb információ nélkül az alapértelmezett angol. De akkor megmondhatja a rendszernek, hogy héberül akarja használni ezt a további sort:
$format->setHebrewFormat(true)
Most, ha ugyanazt a json_decode('”' . $format->formatParsha($jewishCalendar) . '”') sort futtatja, a következőt kapja:
כי תבוא
Az egészet összerakva:
<?php 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";
Ez a következőt jelenné meg: כי תבוא – Ki Savo
Pontosabban, milyen HÉBER nap van?
Az előző példához hasonlóan egy jewishCalendar-rel és egy formátumobjektummal kezdjük.
$jewishCalendar = Zmanim::jewishCalendar(Carbon::createFromDate($theyear, $themonth, $theday)); $format = Zmanim::format();
Ezután hozzáadjuk ugyanazt a sort, hogy a formátumot héberre állítsuk.
$format->setHebrewFormat(true);
És végül (és meglehetősen egyszerűen) egy egyenes naptárobjektum kimenetet kérünk:
$zmandate = json_decode('"' . $format->format($jewishCalendar) . '"');
Szó szerint ez minden, amire szüksége van. Az eredmény valami ilyesmi:
17 Elul, 5784
Igen, bár megadtuk a setHebrewFormat-ot, angolul jelent meg.
Annak érdekében, hogy a héber dátum teljes mértékben megjelenjen héberül – mind szavakkal, mind betűkkel – egy kissé eltérő módszert hívunk, amelyet megfelelő módon HebrewDateFormatternek hívnak. Feltételezve (még egyszer), hogy beállította a kezdeti változókat, és létrehozta a jewishCalendar objektumot, a héber nyelvű dátum kimeneti kódja a következő lenne:
$hebformat = HebrewDateFormatter::create(); $hebformat->setHebrewFormat(true); $hebdate = json_decode('"' . $hebformat->format($jewishCalendar) . '"'); print("Hebrew date: $hebdate\n");
Ami adná neked:
Hebrew date: י״ח אלול תשפ״ד
Néha ellenőriznie kell, hogy egy adott dátum-e… nos, egy adott nap. Mint Rosh Chodesh (az új hónap) vagy egy többnapos ünnep része (például Sukkot).
Kiderült, hogy a PHP Zmanim metódus ezt nagyon egyszerűvé teszi. Feltételezve, hogy ugyanúgy kezdted, mint a többi példát,
Miután beállította a jewishCalendar objektumot, ez olyan egyszerű
$jewishCalendar->isRoshHashana(); $jewishCalendar->isSuccos();
Ha a dátum megegyezik az ünnepnappal, akkor az „igaz” értéket adja vissza, és bármilyen logikával vagy folyamattal folytathatja, például megjelenítheti a dátumot (vagy nem).
Akár hiszi, akár nem, még mindig van mit fedezni. Az elkövetkező hetekben, amikor rátérek, szeretném bemutatni a beépített csillagászati funkciók kihasználásának módjait az időszámításokhoz. Akár hiszi, akár nem, nagyon fontos lehet, hogy valóban pontos időpontokat határozzon meg olyan dolgokra, mint például a sabbat és az ünnepek kezdete és vége, valamint más ünnepségek.
Addig is, ha van még valami, amit szeretnél látni, ahogy fedezem; vagy ha kérdései, javításai vagy dicséretei vannak, nyugodtan hagyja őket az alábbi megjegyzésekben.