დიდი ხანია დავწერე PHP Zmanim-ის შესახებ – სამუშაო, რაც მე გავაკეთე და ის, რაც ვისწავლე მისი განხორციელებისას. მაგრამ მიუხედავად დაგვიანებისა, ყოველთვის განზრახული მქონდა საუბრის გაგრძელება. სწორედ ამას ვაკეთებთ დღეს.
ჩემსპირველ პოსტში ავუხსენი, თუ როგორ უნდა დააინსტალიროთ და დაიწყოთ PHP 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-ის ფორმატის მეთოდის გამოყენების გზები, რათა გამომავალი უფრო იკითხება:
$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-ის საკუთარ string-to-time ფუნქციას. ბოდიშს გიხდით, თუ შეჩერდით. მაგრამ ეს მართლაც ასე მარტივია.
(...და სხვა არსებითი, მაგრამ შემაშფოთებელი კითხვები ხშირად დასმულია თქვენს სინაგოგაში და მის გარშემო.)
თარიღის გამოთვლებთან ერთად, KosherJava ბიბლიოთეკას (და შესაბამისად PHP Zmanim ბიბლიოთეკას) აქვს მეთოდები და ფუნქციები, რათა სწრაფად მიაწოდოს ინფორმაცია, როგორც ზემოთ მოთხოვნილი.
პირველი, რაც უნდა გვესმოდეს, არის ის, რომ 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));
ჩვენ ახლა გვაქვს jewishCalendar ობიექტი, რომელთანაც უნდა ვიმუშაოთ და შეგვიძლია გამოვიყენოთ ისეთი მეთოდები, როგორებიც ჩვენ დროდადრო ვიპოვნეთ. მაგალითად: თუ ვივარაუდებთ, რომ ჩვენ მიერ არჩეული თარიღი იყო შაბათი, ჩვენ შეგვიძლია მივიღოთ თორის ნაწილი:
$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-ით და ფორმატის ობიექტით.
$jewishCalendar = Zmanim::jewishCalendar(Carbon::createFromDate($theyear, $themonth, $theday)); $format = Zmanim::format();
შემდეგ, ჩვენ ვამატებთ იმავე ხაზს, რომ ფორმატი დავაყენოთ ებრაულზე.
$format->setHebrewFormat(true);
და ბოლოს (და საკმაოდ მარტივად), ჩვენ ვითხოვთ სწორი კალენდარული ობიექტის გამოტანას:
$zmandate = json_decode('"' . $format->format($jewishCalendar) . '"');
ეს არის ფაქტიურად ყველაფერი რაც თქვენ გჭირდებათ. შედეგი დაახლოებით ასეთია:
17 Elul, 5784
დიახ, მიუხედავად იმისა, რომ ჩვენ დავაზუსტეთ setHebrewFormat ის ინგლისურად გამოვიდა.
იმისათვის, რომ ებრაული თარიღი სრულად გამოჩნდეს ებრაულად - როგორც სიტყვებით, ასევე ასოებით - ჩვენ გამოვიყენებთ ოდნავ განსხვავებულ მეთოდს, რომელსაც სათანადოდ უწოდებენ HebrewDateFormatter. თუ (კიდევ ერთხელ) დააყენეთ თქვენი საწყისი ცვლადები და შექმენით jewishCalendar ობიექტი, ებრაული ენის თარიღის გამოსატანი კოდი იქნება:
$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();
თუ თარიღი ემთხვევა დღესასწაულს, ის დაბრუნდება "true" და შეგიძლიათ გააგრძელოთ ნებისმიერი ლოგიკით ან პროცესით, როგორიცაა თარიღის ჩვენება (ან არა).
გინდ დაიჯერეთ თუ არა, ჯერ კიდევ ბევრია გასაშუქებელი. უახლოეს კვირებში, როცა ამას მივაღწევ, მსურს გავაშუქო ჩაშენებული ასტრონომიის ფუნქციების გამოყენების გზები დროის გამოთვლებისთვის. გინდ დაიჯერეთ თუ არა, ეს შეიძლება მართლაც მნიშვნელოვანი იყოს იმ კუთხით, რომ გქონდეთ ნამდვილად ზუსტი დრო ისეთი რამისთვის, როგორიცაა შაბათის დასაწყისი და დასასრული და არდადეგები, სხვა დღესასწაულებთან ერთად.
იმავდროულად, თუ კიდევ არის რამე, ნეტავ ჩემი დაფარვა გქონდეს; ან თუ თქვენ გაქვთ შეკითხვები, შესწორებები ან მადლობა, მოგერიდებათ დატოვოთ ისინი ქვემოთ მოცემულ კომენტარებში.