jobsphp

ActualitéÉcosystème PHP

Calculer les levers et couchers du soleil en PHP grâce à une bibliothèque dédiée

Et pourtant, comme le rapporte HackerNoon, l'auteur Leon vient de publier un guide pratique pour calculer levers et couchers de soleil directement depuis PHP, en s'appuyant sur le port PHP de la bibliothèque KosherJava.

Calculer les levers et couchers du soleil en PHP grâce à une bibliothèque dédiée

Lever de soleil sur le PHP: quand la communauté regarde vers les étoiles (et calcule la position du soleil)

On l'avoue, on ne s'attendait pas à voir un tuto astro débarquer dans le flux PHP cette semaine! Et pourtant, comme le rapporte HackerNoon, l'auteur Leon vient de publier un guide pratique pour calculer levers et couchers de soleil directement depuis PHP, en s'appuyant sur le port PHP de la bibliothèque KosherJava. Pour les devs qui pensaient que notre langage préféré se limitait au CRUD du vendredi soir, voilà de quoi réviser (et mettre un peu d'astronomie dans vos applis).

Calculer la position du soleil, vraiment, en PHP?

Le principe est étonnamment simple une fois qu'on a posé les bases: pour un point donné (latitude, longitude, fuseau horaire) et une date, on demande à quel moment le soleil atteindra un angle précis au-dessus ou en dessous de l'horizon. Leon prend un exemple très parlant: à quelle heure le soleil sera-t-il à 20° au-dessus de l'horizon le 10 juin 2025 à Cleveland? Ce genre de question, on se dit que ça relève d'une API météo ou d'un service externe — et c'est là que la magie opère.

Côté code, le setup tient en quelques lignes: on instancie un objet location (avec nom, latitude, longitude, élévation et timezone), puis un objet calendar qui combine cette localisation avec l'année, le mois et le jour. Ensuite, on appelle les fonctions astronomy du package, et le tour est joué. Pas besoin de dépendances exotiques, pas besoin d'appeler la NASA (quoique — ils apprécieraient sûrement).

Sous le capot: la fonction getSunriseOffsetByDegrees

Attention, subtilité à connaître avant de foncer tête baissée dans la doc: la fonction "pense" le soleil à 0° quand il est au zénith, et à 90° au niveau de l'horizon. Donc quand on "monte" dans le ciel, la valeur en degrés… descend. Oui, c'est contre-intuitif. Oui, ça mérite un bon café et une relecture attentive. Leon le rappelle avec humour: même lui a tiqué quand il a vu passer 70 là où il attendait 20. C'est exactement le genre de piège qui fait passer une heure de debug pour une heure d'astronomie appliquée.

Pourquoi on devrait s'en soucier (au-delà du fun)?

Soyons honnêtes: calculer l'aube ou le crépuscule, ça ne va pas bouleverser votre SaaS B2B. Mais des cas concrets existent! Leon cite explicitement deux traditions qui s'appuient sur ces données: le judaïsme (avec l'alot hashachar, l'aube, et les horaires de Shabbat) et l'islam (avec le fajr). Les deux traditions cherchent ce premier signe d'éclaircissement du ciel à l'est — une notion de perception humaine, diablement difficile à formaliser (le soleil bouge, la latitude joue, l'atmosphère fait des siennes).

Le consensus généralement retenu, précise l'auteur, c'est que ce premier signal devient perceptible par un œil humain par temps clair quand le soleil est à 18° sous l'horizon. À partir de là, la bibliothèque PHP Zmanim vous sort l'heure pile. Pas mal, non?

Et maintenant, on fait quoi?

Si l'astrophysique appliquée en PHP vous chatouille, trois pistes concrètes:

  • Récupérer le port PHP de KosherJava (crédits à Zachary Weixelbaum et Eliyahu Hershfeld pour le travail original) et le tester sur une ville qui vous parle.
  • Jouer avec différents angles: levers/couchers civils, nautiques, astronomiques — tout est dans les fonctions astronomy natives du package.
  • Penser aux use cases métier que vous n'aviez pas envisagés: apps religieuses, plannings d'événements outdoor, bornes de recharge solaires, bref, tout ce qui dépend vraiment du soleil et pas d'une approximation à la louche.

Et si jamais vous aviez besoin de recruter un dev PHP capable de mixer astronomie et refacto propre… on connaît une petite plateforme qui fait ça très bien. (Oui, on assume le placement de produit — on est comme ça, chez jobsphp.fr, on assume nos coups.)