Cela fait un moment que je n'ai pas écrit sur PHP Zmanim – le travail que j'ai fait avec lui et les choses que j'ai apprises en l'implémentant. Mais malgré le retard, j'ai toujours eu l'intention de poursuivre la conversation. C'est ce que nous faisons aujourd'hui.
Dans monpremier article , j'ai expliqué comment installer et démarrer avec la bibliothèque PHP Zmanim. Ensuite, dans l' article suivant , j'ai approfondi le calcul de temps plus complexes et la véritable puissance de l'outil : appliquer les opinions rabbiniques les plus courantes pour divers zmanim. Je reprends là où je m'étais arrêté avec un chevauchement minimal, donc si vous avez besoin de prendre une minute pour vous remettre à niveau, j'ai mis un lien vers ces articles précédents.
L'objectif d'aujourd'hui est d'explorer les utilisations de PHP Zmanim qui vont au-delà de l'utilisation relativement simple de la bibliothèque. Cela comprend :
Une fois encore, je dois commencer par exprimer ma gratitude aux personnes qui ont rendu tout cela possible. Parmi une longue liste de noms, citons Zachary Weixelbaum, le mainteneur de la bibliothèque PHP Zmanim elle-même, et Eliyahu Hershfeld : créateur de la bibliothèque Kosher Java sur laquelle PHP Zmanim est basé.
Lorsque nous nous sommes arrêtés, nous avions un script PHP de base solide qui :
Cela ressemblait à ceci :
<?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"; ?>
Mais le lever du soleil n'est que le début. En utilisant l'un des calculs intégrés (qui sont décrits sur la page readme de GitHub ), vous pouvez extraire une grande variété d'heures. Par exemple, pour que Mincha Gedola utilise une opinion rabbinique spécifique, je pourrais inclure :
$gedolah = $zmanim->minchaGedola16Point1Degrees
Dans le dernier blog, j'ai également abordé les moyens d'utiliser la méthode de formatage de PHP Zmanim pour rendre la sortie plus lisible :
$gedolah = $gedolah->format('g:i a');
Pour ceux qui ne passent pas beaucoup de temps à la synagogue (pas de blâme, pas de honte, vous êtes toujours le bienvenu ici), cela n'est peut-être pas évident, mais - malgré le nom du zman - très peu d'organisations prient Mincha (prières de l'après-midi) à Mincha Ketana, Mincha Gedola ou Plag haMincha.
En fait, une grande partie du travail de calcul des heures ne se résume pas à la simple question « À quelle heure est Mincha Gedola ? » mais plutôt à la question « À quelle heure pouvons-nous raisonnablement programmer Mincha pour que tout le monde ait le temps d'arriver après le travail, mais pas si tard que personne ne vienne parce qu'ils rateraient le dîner ? »
Si cela est trop théorique, permettez-moi de partager le puzzle logique Jenga que ma synagogue prend en compte lors de l'établissement du programme hebdomadaire :
Même si tous les autres moments que j’ai abordés dans des blogs précédents sont toujours importants, j’espère que vous commencez à réaliser qu’ils comptent moins souvent qu’on pourrait le penser.
Alors, comment prendre un temps (comme shkia/coucher de soleil) puis ajouter ou soustraire des minutes ? Nous commencerons avec le même script que nous avions auparavant :
<?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);
À cela, nous ajouterons le code pour obtenir le coucher du soleil :
$sunset = $zmanim->sunset;
Et puis, on soustrait 18 minutes pour obtenir le temps d'allumage des bougies :
$candles = date('g:i a', strtotime($sunset . " -18 minutes"));
C'est vrai. Il suffit d'utiliser la fonction string-to-time de PHP. Je suis désolé si je vous ai laissé en suspens. Mais c'est vraiment aussi simple que ça.
(…et d’autres questions essentielles mais vexantes souvent posées dans et autour de votre synagogue.)
En plus des calculs de dates, la bibliothèque KosherJava (et donc la bibliothèque PHP Zmanim) dispose de méthodes et de fonctions permettant de fournir rapidement des informations comme celles demandées ci-dessus.
La première chose à comprendre est que l'objet PHP Zmanim avec lequel nous avons travaillé jusqu'à présent était un objet Zmanim - un objet qui possède un ensemble d'heures spécifiques pour une date particulière. Pour les choses impliquant les dates elles-mêmes, nous instancions un objet jewishCalendar. La bonne nouvelle est qu'il est BEAUCOUP plus facile à créer. Tout ce dont vous avez besoin, c'est de l'année, du mois et du jour.
<?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));
Nous disposons désormais d'un objet jewishCalendar avec lequel travailler et pouvons utiliser des méthodes similaires à celles que nous avons trouvées pour les heures. Par exemple : en supposant que la date que nous avons sélectionnée était un samedi, nous pouvons obtenir la portion de la Torah :
$format = Zmanim::format(); $parshaeng = json_decode('"' . $format->formatParsha($jewishCalendar) . '"');
(ignorez le paramètre $format pour l'instant. Nous l'examinerons dans un instant).
Si vous exécutiez ce code, $parshaeng vous donnerait :
Parshas Ki Savo
Vous remarquerez que nous n'avons pas eu besoin de fournir la latitude, la longitude, le fuseau horaire, etc. Je ne saurais trop insister sur le fait que cette capacité à elle seule - la possibilité d'obtenir des dates, des portions de la Torah, etc. - rend la bibliothèque PHP Zmanim utile à elle seule, même sans les calculs de temps.
La Paracha ? Bien sûr ! C'est là qu'intervient la ligne $format.
Tout d'abord, une explication de ce que c'est : c'est une méthode qui modifie des objets comme Zmanim et jewishCalendar, en définissant les options d'affichage et de sortie. La définition de Zmanim::format() sans aucune autre information revient par défaut à l'anglais. Mais vous pouvez ensuite indiquer au système que vous voulez l'hébreu avec cette ligne supplémentaire :
$format->setHebrewFormat(true)
Maintenant, si vous exécutez la même ligne json_decode('”' . $format->formatParsha($jewishCalendar) . '”'), vous obtiendrez :
כי תבוא
Pour mettre tout cela ensemble :
<?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";
Cela afficherait : כי תבוא – Ki Savo
Plus précisément, quel jour HÉBRAÏQUE est-ce ?
Comme dans l'exemple précédent, nous commençons avec un jewishCalendar et un objet format.
$jewishCalendar = Zmanim::jewishCalendar(Carbon::createFromDate($theyear, $themonth, $theday)); $format = Zmanim::format();
Ensuite, nous ajoutons la même ligne pour définir le format en hébreu.
$format->setHebrewFormat(true);
Et enfin (et assez simplement), nous demandons une sortie d'objet de calendrier directe :
$zmandate = json_decode('"' . $format->format($jewishCalendar) . '"');
C'est littéralement tout ce dont vous avez besoin. Le résultat ressemble à ceci :
17 Elul, 5784
Oui, même si nous avons spécifié setHebrewFormat, il est sorti en anglais.
Pour que la date hébraïque s'affiche entièrement en hébreu (à la fois en mots et en lettres), nous invoquons une méthode légèrement différente appelée, de manière appropriée, HebrewDateFormatter. En supposant (une fois de plus) que vous ayez configuré vos variables initiales et créé un objet jewishCalendar, le code pour générer une date en hébreu serait :
$hebformat = HebrewDateFormatter::create(); $hebformat->setHebrewFormat(true); $hebdate = json_decode('"' . $hebformat->format($jewishCalendar) . '"'); print("Hebrew date: $hebdate\n");
Ce qui vous donnerait :
Hebrew date: י״ח אלול תשפ״ד
Parfois, il faut vérifier si une date spécifique correspond à un jour précis, comme Rosh Hodech (le nouveau mois) ou à une fête de plusieurs jours (comme Souccot).
Il s'avère que la méthode PHP Zmanim rend cela très simple. En supposant que vous ayez commencé de la même manière que les autres exemples,
une fois que vous avez configuré l'objet jewishCalendar, c'est aussi simple que
$jewishCalendar->isRoshHashana(); $jewishCalendar->isSuccos();
Si la date correspond au jour férié, elle renverra « vrai » et vous pourrez procéder avec la logique ou le processus de votre choix, comme afficher la date (ou non).
Croyez-le ou non, il y a encore beaucoup à dire. Dans les semaines à venir, quand j'y arriverai, j'aimerais aborder les moyens d'exploiter les fonctions astronomiques intégrées pour les calculs de temps. Croyez-le ou non, cela peut vraiment avoir une importance pour avoir des heures vraiment précises pour des choses comme le début et la fin du Shabbat et des fêtes, ainsi que d'autres observances.
En attendant, s'il y a autre chose que vous aimeriez me voir couvrir ; ou si vous avez des questions, des corrections ou des félicitations, n'hésitez pas à les laisser dans les commentaires ci-dessous.