PHP Zmanim के बारे में लिखे हुए मुझे काफ़ी समय हो गया है - मैंने इसके साथ जो काम किया है और इसे लागू करते समय जो चीज़ें सीखी हैं। लेकिन देरी के बावजूद, मेरा हमेशा से इरादा बातचीत जारी रखने का था। आज हम यही कर रहे हैं।
अपनीपहली पोस्ट में, मैंने बताया कि PHP Zmanim लाइब्रेरी को कैसे इंस्टॉल करें और कैसे शुरू करें। फिर, अगली पोस्ट में, मैंने अधिक जटिल समय की गणना करने और टूल की वास्तविक शक्ति के बारे में जानकारी ली - विभिन्न zmanim के लिए सबसे आम रब्बीनिक राय को लागू करना। मैं कम से कम ओवरलैप के साथ वहीं से शुरू कर रहा हूँ जहाँ मैंने छोड़ा था, इसलिए यदि आपको गति से वापस आने के लिए एक मिनट का समय चाहिए, तो मैंने उन पिछली पोस्टों को लिंक कर दिया है।
आज का लक्ष्य PHP Zmanim के ऐसे उपयोगों का पता लगाना है जो लाइब्रेरी के अपेक्षाकृत सरल उपयोग से आगे बढ़ते हैं। इसमें शामिल हैं:
एक बार फिर, मुझे उन लोगों के प्रति आभार व्यक्त करना चाहिए जिन्होंने यह सब संभव बनाया। नामों की लंबी सूची में सबसे पहले हैं ज़ैचरी वेक्सेलबाम, जो PHP Zmanim लाइब्रेरी के अनुरक्षक हैं, और एलियाहू हर्शफेल्ड: कोशर जावा लाइब्रेरी के निर्माता जिस पर PHP Zmanim आधारित है।
जब हमने छोड़ा तो हमारे पास एक ठोस बुनियादी PHP स्क्रिप्ट थी:
यह कुछ इस प्रकार दिखता था:
<?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"; ?>
लेकिन सूर्योदय तो बस शुरुआत है। किसी भी अंतर्निहित गणना (जिसका वर्णन GitHub readme पृष्ठ पर किया गया है) का उपयोग करके, आप कई तरह के समय खींच सकते हैं। उदाहरण के लिए, मिन्चा गेडोला को एक विशिष्ट रब्बीनिक राय का उपयोग करने के लिए, मैं इसमें शामिल कर सकता हूँ:
$gedolah = $zmanim->minchaGedola16Point1Degrees
पिछले ब्लॉग में, मैंने आउटपुट को अधिक पठनीय बनाने के लिए PHP Zmanim की format विधि का उपयोग करने के तरीकों को भी कवर किया था:
$gedolah = $gedolah->format('g:i a');
जो लोग आराधनालय में बहुत अधिक समय नहीं बिताते हैं (कोई दोष नहीं, कोई शर्म नहीं, आपका यहां फिर भी स्वागत है) उनके लिए यह स्पष्ट नहीं हो सकता है, लेकिन - ज़मान के नाम के बावजूद - बहुत कम संगठन मिनचा केतना, मिनचा गेडोला, या प्लेग हामिनचा में मिनचा (दोपहर की प्रार्थना) करते हैं।
वास्तव में, समय की गणना के संबंध में बहुत सारा काम सीधे तौर पर इस बात से कम जुड़ा है कि "मिन्चा गेडोला का समय क्या है?" और अधिक इस बात से कि "हम मिन्चा को दिन में कितनी देर से शेड्यूल कर सकते हैं ताकि सभी को काम के बाद यहां पहुंचने का समय मिल जाए; लेकिन इतना देर से भी नहीं कि कोई भी न आए क्योंकि वे रात का खाना मिस कर देंगे?"
यदि यह बहुत सैद्धांतिक है, तो मुझे उस तार्किक जेंगा पहेली को साझा करने की अनुमति दें, जिस पर मेरा आराधनालय साप्ताहिक कार्यक्रम निर्धारित करते समय विचार करता है:
यद्यपि मैंने पिछले ब्लॉगों में जिन अन्य समयों का उल्लेख किया था, वे अब भी महत्वपूर्ण हैं, तथापि आशा है कि आप यह महसूस करने लगे होंगे कि वे अपेक्षा से कम महत्वपूर्ण हैं।
तो आप समय कैसे लेते हैं (जैसे कि शकिया/सूर्यास्त) और फिर मिनटों को कैसे जोड़ते या घटाते हैं? हम उसी स्क्रिप्ट से शुरू करेंगे जो हमने पहले लिखी थी:
<?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);
इसमें हम सूर्यास्त प्राप्त करने के लिए कोड जोड़ेंगे:
$sunset = $zmanim->sunset;
और फिर, मोमबत्ती जलाने का समय पाने के लिए हम 18 मिनट घटा देंगे:
$candles = date('g:i a', strtotime($sunset . " -18 minutes"));
यह सही है। आप बस PHP के अपने स्ट्रिंग-टू-टाइम फ़ंक्शन का उपयोग करें। अगर मैंने आपको सस्पेंस में रखा तो मुझे खेद है। लेकिन यह वास्तव में इतना आसान है।
(...और अन्य आवश्यक लेकिन परेशान करने वाले प्रश्न जो अक्सर आपके आराधनालय में और उसके आस-पास पूछे जाते हैं।)
तिथि गणना के साथ-साथ, कोशेरजावा लाइब्रेरी (और इसलिए PHP ज़मानिम लाइब्रेरी) में ऊपर पूछी गई जानकारी जैसी जानकारी शीघ्रता से प्रदान करने के लिए विधियां और फ़ंक्शन हैं।
समझने वाली पहली बात यह है कि PHP Zmanim ऑब्जेक्ट जिस पर हम अब तक काम कर रहे हैं, वह एक Zmanim ऑब्जेक्ट है - एक ऑब्जेक्ट जिसमें किसी विशेष तिथि के लिए विशिष्ट समय का एक सेट होता है। तिथियों से जुड़ी चीज़ों के लिए, हम एक jewishCalendar ऑब्जेक्ट को इंस्टेंटिएट करते हैं। अच्छी खबर यह है कि इसे बनाना बहुत आसान है। आपको बस साल, महीना और दिन चाहिए।
<?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 सेटिंग को अनदेखा करें। हम थोड़ी देर में इस पर विस्तार से चर्चा करेंगे)
यदि आप उस कोड को चलाएंगे तो $parshaeng आपको देगा:
Parshas Ki Savo
आप देखेंगे कि हमें अक्षांश, देशांतर, समय क्षेत्र आदि प्रदान करने की आवश्यकता नहीं थी। मैं इस बात पर पर्याप्त जोर नहीं दे सकता कि अकेले यह क्षमता - तिथियां, टोरा भाग और अधिक प्राप्त करने की क्षमता - PHP Zmanim लाइब्रेरी को समय गणना के बिना भी अपने आप में उपयोगी बनाती है।
टोरा भाग? बेशक! यहीं पर $format लाइन आती है।
सबसे पहले, यह क्या है, इसका स्पष्टीकरण: यह एक ऐसी विधि है जो Zmanim और jewishCalendar जैसे ऑब्जेक्ट को संशोधित करती है, डिस्प्ले और आउटपुट विकल्प सेट करती है। बिना किसी अन्य जानकारी के Zmanim::format() सेट करने पर डिफ़ॉल्ट रूप से अंग्रेज़ी आती है। लेकिन फिर आप इस अतिरिक्त लाइन के साथ सिस्टम को बता सकते हैं कि आप हिब्रू चाहते हैं:
$format->setHebrewFormat(true)
अब, यदि आप वही json_decode('”' . $format->formatParsha($jewishCalendar) . '”') लाइन चलाते हैं, तो आपको मिलेगा:
כי תבוא
सब कुछ एक साथ रखते हुए:
<?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";
यह प्रदर्शित होगा: כי תבוא - Ki Savo
अधिक विशेष रूप से, यह कौन सा हिब्रू दिवस है?
पिछले उदाहरण की तरह, हम एक jewishCalendar और एक format ऑब्जेक्ट के साथ शुरुआत करते हैं।
$jewishCalendar = Zmanim::jewishCalendar(Carbon::createFromDate($theyear, $themonth, $theday)); $format = Zmanim::format();
फिर, हम प्रारूप को हिब्रू में सेट करने के लिए उसी पंक्ति को जोड़ते हैं।
$format->setHebrewFormat(true);
और अंत में (और काफी सरलता से), हम एक सीधे कैलेंडर ऑब्जेक्ट आउटपुट के लिए पूछते हैं:
$zmandate = json_decode('"' . $format->format($jewishCalendar) . '"');
सचमुच, आपको बस इतना ही चाहिए। नतीजा कुछ इस तरह होगा:
17 Elul, 5784
हां, यद्यपि हमने setHebrewFormat निर्दिष्ट किया था, फिर भी यह अंग्रेजी में आया।
हिब्रू तिथि को हिब्रू में पूरी तरह से दिखाने के लिए - शब्दों और अक्षरों दोनों में - हम एक अलग विधि का उपयोग करते हैं, जिसे उचित रूप से हिब्रूडेटफॉर्मेटर कहा जाता है। यह मानते हुए (एक बार फिर) कि आपने अपने प्रारंभिक चर सेट किए हैं और एक यहूदी कैलेंडर ऑब्जेक्ट बनाया है, हिब्रू भाषा की तिथि को आउटपुट करने के लिए कोड होगा:
$hebformat = HebrewDateFormatter::create(); $hebformat->setHebrewFormat(true); $hebdate = json_decode('"' . $hebformat->format($jewishCalendar) . '"'); print("Hebrew date: $hebdate\n");
जो आपको देगा:
Hebrew date: י״ח אלול תשפ״ד
कभी-कभी, आपको यह जांचने की ज़रूरत होती है कि क्या कोई खास तारीख़... खैर, एक खास दिन है। जैसे रोश चोदेश (नया महीना) या कई दिनों की छुट्टी का हिस्सा (जैसे सुकोट)।
यह पता चला है कि PHP Zmanim विधि इसे बहुत सरल बनाती है। यह मानते हुए कि आपने अन्य उदाहरणों की तरह ही शुरुआत की है,
एक बार जब आप jewishCalendar ऑब्जेक्ट सेट कर लेते हैं, तो यह उतना ही सरल है
$jewishCalendar->isRoshHashana(); $jewishCalendar->isSuccos();
यदि तारीख छुट्टी से मेल खाती है, तो यह "सत्य" लौटाएगा, और आप जो भी तर्क या प्रक्रिया चाहें, उसके साथ आगे बढ़ सकते हैं, जैसे कि तारीख प्रदर्शित करना (या नहीं)।
मानो या न मानो, अभी भी बहुत कुछ कवर करना बाकी है। आने वाले हफ़्तों में जब भी मुझे मौका मिलेगा, मैं समय की गणना के लिए अंतर्निहित खगोल विज्ञान कार्यों का लाभ उठाने के तरीकों को कवर करना चाहूँगा। मानो या न मानो, यह वास्तव में शाबात और छुट्टियों के साथ-साथ अन्य अनुष्ठानों की शुरुआत और समाप्ति जैसी चीज़ों के लिए सही समय होने के मामले में बहुत मायने रखता है।
इस बीच, यदि आप चाहते हैं कि मैं कुछ और कवर करूं; या यदि आपके पास कोई प्रश्न, सुधार या प्रशंसा हो, तो कृपया नीचे टिप्पणी में उन्हें छोड़ दें।