Série temporelle des données : mise en route avec PHP Zmanim

Remerciements

Dans ce blog, je vous explique les concepts et techniques liés à la manière dont les soi-disant « heures juives » (zmanim) sont calculées, ainsi que les techniques nécessaires pour utiliser la bibliothèque PHP Zmanim – une collection de fonctions qui vous permettent de calculer facilement les heures juives.

La bibliothèque PHPZmanim est maintenue par Zachary Weixelbaum. Comme tant de choses dans la tech actuelle, PHP Zmanim s’appuie sur la bibliothèque fondamentale Kosher Java d’Eliyahu Hershfeld. Je dois une immense dette de gratitude à Zachary et Eliyahu – non seulement pour le travail qu’ils ont fourni dans le développement de ces bibliothèques, mais aussi pour le soutien qu’ils m’ont apporté lorsque je me suis familiarisé avec les directives techniques et religieuses juives (halacha) nécessaires pour les utiliser.

Introduction

« À quelle heure seront les prières de l’après-midi (Mincha) cette semaine ? » est une question déceptrice complexe. Elle est déceptive car les « prières de l’après-midi » semblent se suffire à elles-mêmes, mais (comme pour tant de choses liées aux règles religieuses juives (halacha), il y a une vaste quantité de contexte, de commentaires et de spécificités requises.

NOTE : Si vous êtes déjà à l’aise avec les concepts de temps juif (zmanim), n’hésitez pas à passer directement à la section intitulée « Installer PHP Zmanim ». Je ne m’offenserai pas et ne vous en tiendrai pas rigueur.

Il est difficile de comprendre l’importance des calculs de temps précis dans la journée, la semaine et la vie religieuse juive. Cela intervient dans tout, depuis le début et la fin d’un jeûne jusqu’à l’heure où il est trop tard (ou trop tôt) pour dire certaines prières, jusqu’au moment où simplement posséder (sans parler de manger) du pain est interdit.

Pour le dire autrement, je vais partager une citation du Rabbin Abraham Joshua Heschel dans son livre « Le Sabbat ».

Le sens du Sabbat est de célébrer le temps plutôt que l’espace. Six jours par semaine, nous vivons sous la tyrannie des choses de l’espace; le jour du Sabbat, nous essayons de devenir attentifs à la sainteté dans le temps.

Rabbi Abraham Joshua Heschel, “The Sabbath”

Même avec cette explication, certains lecteurs pourraient toujours se demander, « Pourquoi en faire tout un fromage à propos de ça? Vous me dites que Dieu va vous tenir rigueur si vous êtes à 5 minutes près? »

C’est une question valable et mérite un moment de discussion car autrement, la nécessité, sans parler de l’impact de ce blog (et des techniques et technologies qu’il décrit), est diminuée.

Non, bien sûr, Dieu ne s’en soucie pas. Tout comme mon entraîneur de course ne « s’occupe » pas si je fais mon échauffement avant de courir, mes entraînements hors saison, ou si j’ai assez bu d’eau. Soyons honnêtes : peu importe à quel point je m’entraîne, mon entraîneur ne sera pas plus en bonne santé. Cependant, mon entraîneur – qui se soucie de moi au-delà de ma performance dans la prochaine course, veut que JE m’en soucie. Ils veulent que je sois totalement engagé, si ce n’est que parce qu’ils savent que mon expérience sera plus épanouissante à cause de cela.

De la même manière, Dieu ne « se soucie » pas. Mais nous savons (à travers les textes de la Torah et du Talmud) que Dieu veut que NOUS nous soucions. Et donc, les savants juifs à travers les millénaires ont tenté – en utilisant les preuves présentées dans le texte – d’éviter les réponses simples et simplistes, et de creuser plus profondément pour découvrir les détails.

Revenons à la question à portée de main : « Quelle heure sont les prières de l’après-midi ? » Pour comprendre cela, nous devons d’abord comprendre ce qui définit « le jour » (par rapport à « la nuit ») ; comment comprendre ce qui sépare « le matin » de « l’après-midi » ; comment diviser efficacement la journée en parties ; et bien plus encore.

Bien que ce blog présente certains de ces concepts et termes au besoin, il ne devrait pas être considéré comme exhaustif par aucune médiation de l’imagination.

Il n’est pas surprenant que les ordinateurs aient rapidement calculé ces heures, et maintenant il existe une grande variété de sites Web et d’applications prêts à le faire pour nous. Même pour ceux qui veulent créer leurs propres programmes pour effectuer ces calculs, il existe des solutions économes en temps sous forme de bibliothèques de code comme KosherJava et ses nombreuses versions, y compris PHP, Swift, .Net, JavaScript, Python, et bien d’autres.

Néanmoins, il est important de comprendre la théorie derrière les outils. Toute personne souhaitant créer un site web ou une application doit s’assurer que son programme ne commet pas accidentellement des erreurs de temps. Bien qu’auparavant mentionné, personne ne « va en enfer » (pour ainsi dire) pour prier au mauvais moment, il existe un commandement strict :

וְלִפְנֵ֣י עִוֵּ֔ר לֹ֥א תִתֵּ֖ן מִכְשֹׁ֑ל וְיָרֵ֥אתָ מֵּאֱלֹהֶ֖יךָ
“lifnei iver lo titein michshol v’yareita mei-elohecha”
“Ne mettez pas un blocage devant les aveugles”

(Leviticus 19:14)

Il est une chose si un individu se trompe par accident. C’en est une autre de fournir de mauvaises informations qui font que quelqu’un (ou pire, beaucoup de gens) commet une erreur, en croyant que les informations qu’ils ont obtenues (de votre application) étaient précises et fiables.

Les Temps de Base

Avec cela à l’esprit, nous commencerons par comprendre les temps qui sont assez simples et les moins affectés par les variations dans la tradition juive :

  • L’aube (Netz Hachma) est une bonne vieille aube nautique – le moment où le bord supérieur du disque du soleil touche l’horizon.
  • Le crépuscule (Shkia) est l’autre face de la pièce quotidienne – le moment où le bord supérieur du soleil passe juste sous l’horizon.
  • A “seasonal hour” (sha’ah) refers to the even division of daylight, the time between sunrise and sunset. There are always 12 seasonal hours, but they may be longer or shorter than a regular (on your clock) hour because the amount of daylight fluctuates with the season.
    • Notez que certaines traditions calculent une sha’ah comme 12 divisions du temps entre l’aube (alot hashachar, ou simplement « alot » lorsque la lumière est visible à l’horizon, mais avant le lever du soleil lui-même) et la nuit (tzeis hakochavim, ou simplement « tzeis », lorsqu’aucune lumière n’est visible à l’horizon, après le coucher du soleil). Nous en dirons plus sur l’aube (alot) et la nuit (tzeit) plus tard dans le blog.
  • Les minutes saisonnières (sha’ot zmaniyot) représentent 1/60 d’une heure saisonnière et, tout comme une heure saisonnière, peuvent être plus grandes ou plus petites qu’une minute sur votre horloge.

Comme vous pouvez le constater, le lever et le coucher du soleil forment le noyau fondamental de tous les autres calculs de temps, et un grand nombre de moments importants juifs au cours de la journée sont directement dérivés de ceux-ci. Par exemple, dans certaines traditions, vous trouverez :

  • Le Shabbat commence le vendredi soir, 18 minutes avant le coucher du soleil (shkia)
  • Le Shabbat se termine le samedi soir 45 (ou 50, ou 72) minutes après le coucher du soleil (shkia)
  • … et ainsi de suite.

Calculs où « c’est compliqué »

Une fois que vous avez déterminé le lever et le coucher du soleil, la prochaine étape consiste à identifier les deux moments critiques de l’aube et de la nuit. L’aube (Alot haShachar, ou simplement « Alot ») et la nuit (Tzeis hakochavim, ou simplement « Tzeis ») se font face comme le lever et le coucher du soleil. L’aube est le moment où la lumière (mais pas le soleil) est visible à l’horizon. La nuit est le moment où la lumière n’est plus visible.

Malheureusement, la présence ou l’absence de « lumière » est très subjective, et donc la façon dont elle est calculée varie énormément.

  • Certaines traditions utilisent un nombre fixe de minutes d’horloge avant le lever du soleil ou après le coucher du soleil.
  • D’autres utiliseront l’astronomie pour identifier l’heure à laquelle le soleil est sous l’horizon à un nombre spécifique de degrés.
  • D’autres utiliseront une formule, telle que prendre la quantité de lumière du jour (du lever au coucher du soleil), diviser cela en 10 parties égales, puis soustraire cette quantité du lever du soleil ou l’ajouter au coucher du soleil.
  • Pourtant, d’autres prendront le temps où le soleil est sous l’horizon un jour « égal » (c’est-à-dire l’équinoxe de printemps ou d’automne, lorsque la quantité de lumière et d’obscurité est exactement la même), calculeront la différence (en minutes de l’horloge) entre ce temps et le lever du soleil, normaliseront ces minutes par rapport aux « minutes saisonnières » (sha’ot zmaniyot) pour le jour spécifique en question, et enfin soustrairont cette quantité du lever du soleil (ou ajouteront cela au coucher du soleil) pour le jour en question.

Ça semble compliqué ? Comme le titre de cette section le dit, « c’est compliqué ».

Le but de ma description de ces méthodes n’est pas de se mettre d’accord sur un seul calcul « correct », mais plutôt de vous aider à comprendre l’objectif ultime de chaque type de calcul – et de vous faire comprendre qu’il existe plusieurs façons dont différentes traditions juives arrivent à chaque calcul.

Les Heures Complexes

Une fois que vous avez l’aube (alot), le lever du soleil (netz), le coucher du soleil (shkia) et la nuit (tzeis), il devient possible de calculer d’autres moments importants de la journée. Ces moments incluent :

  • Le premier moment pour les prières de l’après-midi (Mincha Gedola), qui est souvent calculé comme un certain nombre d’heures saisonnières (sha’ah) après l’aube ou le lever du soleil. L’objectif de ce moment est qu’il est le premier instant où « l’après-midi » (littéralement, après midi) se produit.
  • Le moment préférable pour les prières de l’après-midi (Mincha ketana), qui est calculé comme un plus grand nombre d’heures saisonnières (sha’ah) après le lever du soleil (netz) ou l’aube (alot). L’idée ici est qu’il est clairement l’après-midi – plus de 3/4 du jour – mais sans le risque qu’il soit accidentellement la nuit (tzeis).
  • Le dernier moment pour les prières de l’après-midi (Plag haMincha, ou « plag »), qui est souvent calculé comme l’intervalle de temps entre le meilleur moment pour les prières de l’après-midi (mincha ketana) et la nuit (tzeis).

Bien qu’il existe plusieurs autres moments clés auxquels nous reviendrons dans un autre blog, ceux-ci suffisent pour nous lancer.

Installation de la bibliothèque PHP Zmanim

Après avoir réglé ces détails techniques, nous pouvons maintenant passer à… des détails techniques ! Sauf que cette fois, ce sont des dÉTAILS techniques techniques. (et pour ceux qui ont sauté directement de l’introduction à cette section, BIENVENUE ! C’est formidable de vous revoir !)

PHP Zmanim est une bibliothèque complexe qui comprend non seulement l’importation de Kosher Java dans le langage PHP mais aussi des modules de soutien comme Carbon (un outil qui facilite les conversions de date et d’heure, plus rapides, plus faciles et plus précises); Symfony (un framework de conception web); et quelques autres petites utilités.

Le fait est que tous ces modules fonctionnent en concert avec PHP Zmanim et vous en avez besoin pour que quelque chose fonctionne. La manière la plus simple d’installer tous ces modules est d’utiliser l’utilitaire PHP « composer » qui gère les dépendances.

Si vous devez exécuter PHP Zmanim sur un serveur web et n’avez pas accès pour exécuter des installateurs en ligne de commande, vous êtes encore chanceux. Il suffit de copier le répertoire ./vendor à partir d’une installation locale, et – avec quelques réserves – cela fonctionnera.

Quelles sont les mises en garde ? La principale est de s’assurer que la version de PHP prise en charge par votre fournisseur d’hébergement correspond à celle que vous utilisez lors de l’installation via Composer.

Cela m’amène à la commande d’installation réelle de Composer. Je sais que nous n’avons pas encore commencé à coder, mais configurons un répertoire où les scripts vont être placés. Pour ce blog, je vais l’appeler /phpzmanim_test.

Dans une fenêtre de terminal, déplacez-vous vers ce répertoire :

cd /php zmanim_test

Maintenant, tapez la commande :

composer -V

(notez que c’est un V majuscule)

Cela confirmera si Composer est installé ou non. Sinon, faites une recherche rapide pour découvrir la meilleure façon d’installer sur votre système d’exploitation.

Ensuite, tapez la commande :
composer require zachweix/php-zmanim

Cela fera deux choses :

  1. Premièrement, il créera le fichier composer.json dans le répertoire actuel, avec des instructions indiquant que PHP Zmanim doit être installé.
  2. Il installe en fait PHP Zmanim pour vous dans un répertoire ./vendor à l’intérieur du répertoire actuel. Aucune étape supplémentaire n’est nécessaire.

La seule autre chose à noter liée à « composer » est que si vous devez mettre à jour, vous pouvez le faire facilement en vous rendant dans le répertoire /phpzmanim_test (ou quel que soit le nom que vous lui avez donné) et en tapant la commande composer update. Cela lira les informations dans le fichier composer.json et mettra à jour tout ce qu’il y trouvera.

(SPOILER : cela signifie que vous NE DEVEZ PAS supprimer le fichier composer.json. Vous n’êtes toutefois pas obligé de le copier sur votre site distant avec le reste de votre application si vous ne le souhaitez pas.)

Une fois cela fait, vous devez inclure la ligne suivante dans chaque script PHP qui utilisera la bibliothèque PHP Zmanim :

PHP

 

require 'vendor/autoload.php';

Démarrer avec PHP Zmanim

Maintenant que PHP Zmanim est installé, vous êtes prêt à commencer à écrire du code avec.

Pour ce faire, vous allez d’abord créer un objet PHP – une collection (en réalité, un tableau) de données qui sont passées dans diverses fonctions. Cet objet contient à la fois la date spécifique pour les heures que vous voudrez extraire et également les informations de localisation précises.

Création d’un objet avec "Zmanim::Create()"

Avant de commencer, vous devez connaître quelques éléments sur l’emplacement où vous demandez des heures :

  • La latitude et la longitude.
  • Le fuseau horaire, formaté en utilisant le format base de données de fuseaux horaires (exemple : "America/New_York").
  • L’altitude de cet emplacement, si vous choisissez de l’utiliser. (ASTUCE : très rarement l’altitude entre en compte dans ces calculs.)
  • L’année, le mois et le jour des heures que vous calculerez.

Le format pour créer votre objet est le suivant :

PHP

 

$VARNAME = Zmanim::create(YEAR, MONTH, DAY, "NAME OF LOCATION", LATITUDE, LONGITUDE, ELEVATION, "TIME ZONE");

Voici un exemple spécifique :

PHP

 

$zmanim = Zmanim::create(2019, 2, 21, "New York City", 40.850519, -73.929214, 200, "America/New_York");

Ce à quoi cela ressemble en tant que script avec des variables à la place de l’entrée littérale :

PHP

 

<?php
require 'vendor/autoload.php';
use PhpZmanim\Zmanim;
use PhpZmanim\Calendar\ComplexZmanimCalendar;
use PhpZmanim\Geo\GeoLocation;

$getdate = date('Y-m-d');
$getyear = date('Y', strtotime($getdate));
$getmonth = date('m', strtotime($getdate));
$getday = date('d', strtotime($getdate));

$locname = "Beit Knesset Chochmat Shlomo, Beachwood, OH";
$lat = 41.4939407;
$long = -81.516709;
$elev = 0;
$tz = 'America/New_York';

$zmanim = Zmanim::create($getyear, $getmonth, $getday, $locname, $lat, $long, $elev, $tz);

Avec ce code en place, vous avez un objet pour la date d’aujourd’hui pour l’emplacement spécifié. Vous pouvez même l’imprimer en utilisant la fonction print_r() de PHP :

PHP

 

print_r($zmanim);

Ce qui devrait vous donner une sortie qui ressemble à ceci :

PHP

 

PhpZmanim\Zmanim Object
(
    [calendar:PhpZmanim\Calendar\AstronomicalCalendar:private] => Carbon\Carbon Object
        (
            [endOfTime:protected] => 
            [startOfTime:protected] => 
            [constructedObjectId:protected] => 00000000000000080000000000000000
            [localMonthsOverflow:protected] => 
            [localYearsOverflow:protected] => 
            [localStrictModeEnabled:protected] => 
            [localHumanDiffOptions:protected] => 
            [localToStringFormat:protected] => 
            [localSerializer:protected] => 
            [localMacros:protected] => 
            [localGenericMacros:protected] => 
            [localFormatFunction:protected] => 
            [localTranslator:protected] => 
            [dumpProperties:protected] => Array
                (
                    [0] => date
                    [1] => timezone_type
                    [2] => timezone
                )

(il y a plus, mais vous comprenez l’idée).

Obtenir Votre Première Heure en Temps Réel – Lever de Soleil (Netz HaHachma)

Une fois que vous avez créé un objet, l’utiliser pour obtenir des heures spécifiques via PHP Zmanim est presque anti-climatique. Obtenir le lever du soleil est aussi simple que ceci:

PHP

 

$sunrise = $zmanim->sunrise;

Si vous n’êtes pas familier avec cela ou ne l’avez pas utilisé auparavant, le -> indique que vous interrogez un objet (encore une fois, une collection d’éléments de données) ou utilisez une méthode intégrée

Cela retournera quelque chose qui ressemble à ceci:

PHP

 

2024-12-20 07:48:52

Pour ceux qui suivent, le code complet jusqu’à présent ressemble à ceci:

PHP

 

sunrise;
echo "$sunrise\n";
?>

Résumé

Il y a beaucoup plus à couvrir dans PHP Zmanim, que je prévois de faire dans les prochaines semaines. Mais cela devrait au moins vous permettre de commencer à créer un script ou un site Web basé sur PHP et à afficher des heures précises pour les moments juifs.

Comme toujours, je suis ouvert aux questions, corrections et éloges dans les commentaires ci-dessous.

Source:
https://dzone.com/articles/time-data-series-getting-started-with-php-zmanim