All guides
No guide matches your search.
الحدود
كل الحدود الصارمة في مكان واحد: نطاقات السنوات المدعومة، وسقوف حجم المُدخَلات، ونطاقات الأعداد بالكلمات، ونطاق أم القرى، وسائر الحدود الرقمية في المكتبة.
On this page
هذه الحدود مقصودة. فهي تُبقي كل استدعاء رخيصًا ويمكن التنبؤ به، وتمنع المُدخَلات غير الموثوقة من أن تتحول إلى تاريخ ملتفّ أو إلى عملية حسابية مكلفة. وتجاوز أي حد يرفع دائمًا استثناء RtlyKitException موثَّقًا (انظر معالجة الأخطاء)، أو Result غير صالح في حالة أدوات التحقق.
نطاقات سنوات التقاويم
كل تاريخ مدعوم في أي تقويم يقابل سنة ميلادية بين 1 و9999، فيمكن لـ DateTimeImmutable أن يحتفظ بأي قيمة تنتجها الفئات دون التفاف. والنطاقات هي الثوابت العامة MIN_YEAR وMAX_YEAR:
| التقويم | MIN_YEAR | MAX_YEAR | التاريخ الميلادي لـ 1/1 من هاتين السنتين |
|---|---|---|---|
Jalali | -620 | 9377 | 0001-03-21 .. 9998-03-20 |
Hijri | 1 | 9665 | 0622-07-19 .. 9998-10-12 |
Hebrew | 3762 | 13759 | 0001-09-06 .. 9998-10-15 |
<?php
require __DIR__.'/vendor/autoload.php';
use RtlyKit\Calendar\{Hebrew, Hijri, Jalali};
foreach ([Jalali::class, Hijri::class, Hebrew::class] as $class) {
printf(
"%-7s %5d..%-5d %s .. %s\n",
(new ReflectionClass($class))->getShortName(),
$class::MIN_YEAR,
$class::MAX_YEAR,
$class::create($class::MIN_YEAR, 1, 1)->toGregorian()->format('Y-m-d'),
$class::create($class::MAX_YEAR, 1, 1)->toGregorian()->format('Y-m-d'),
);
}
// Jalali -620..9377 0001-03-21 .. 9998-03-20
// Hijri 1..9665 0622-07-19 .. 9998-10-12
// Hebrew 3762..13759 0001-09-06 .. 9998-10-15تلتزم كل نقاط الدخول بالنطاق: make وcreate وcreateFromFormat والطوابع الزمنية (timestamp) في Unix وadd*() / sub*() (بما فيها الفروق الضخمة) والدوال المساعدة وماكروات Carbon. والقيمة الواقعة خارج النطاق تُلقي InvalidDateException؛ ولا شيء يُرجع تاريخًا ملتفّاً، ولا يتسرّب أي TypeError أو ValueError.
الفروق والطوابع الزمنية
- أي مقدار في
addDays()/subDays()(وفي الساعات والدقائق والثواني) يزيد على مدى التقويم المدعوم كله (نحو 3.7 مليون يوم، أو المدى نفسه بالساعات أو الدقائق أو الثواني) يُرفض مسبقًا بـInvalidDateException؛ كما يُرفض المقدار الأصغر الذي ينتهي خارج السنوات المدعومة. - يجب أن يقع الطابع الزمني (timestamp) في Unix ضمن السنوات الميلادية من 1 إلى 9999 (مع هامش صغير للمنطقة الزمنية)؛ وما كان أبعد من ذلك يُرفض.
- تعمل
Hebrew::addMonths()وaddYears()في زمن ثابت، مهما كبر المقدار.
عتبات السنة في المُدخَلات النصية
النص مثل 1405/01/01 أو 1405-01-01 الممرَّر إلى make() أو إلى دالة مساعدة يُقرأ على أنه تاريخ التقويم نفسه إذا كانت السنة دون العتبة، وعلى أنه نص ميلادي فيما عدا ذلك:
| الفئة | سنة التقويم نفسه | غير ذلك |
|---|---|---|
Jalali / jdate() | أقل من 1700 | ميلادي |
Hijri / hdate() | أقل من 1700 | ميلادي |
Hebrew / hebrew_date() | 3000 أو أكثر | ميلادي |
لتمرير تاريخ ميلادي حقيقي دون العتبة (مثل السنة 999) استخدم DateTimeImmutable الذي لا يُعاد تفسيره أبدًا. انظر الأسئلة الشائعة.
نطاق أم القرى
- يغطي جدول أشهر أم القرى المدمج السنوات 1300 إلى 1500 هـ (من 1882-11-12 إلى 2077-11-16). وخارجه، وفي
HijriVariant::Tabularدائمًا، تستخدمHijriقواعد حسابية قد تختلف عن الرصد بيوم أو يومين. وتخبركHijri::hasUmmAlQuraData($year)ما إذا كانت السنة مغطاة. والسنوات 1318 إلى 1500 هـ هي التي قورنت بتقويم KACST الرسمي (Hijri::ummAlQuraVerifiedRange()). - تستعمل
IranHolidaysتواريخ رسمية أو منقولة للسنوات الجلالية 1380 إلى 1405. وفي السنوات الأخرى لا تُبلغ عن العطل الإسلامية إلا داخل نطاق أم القرى. وخارجه، ولسنوات ما قبل بداية التقويم الهجري، لا تُرجع إلا العطل الجلالية الثابتة دون استثناء. وتعملall()وallTitles()وallFixed()لكل سنة جلالية من -620 إلى 9377.
سقوف حجم المُدخَلات
| الموضع | الحد | عند التجاوز |
|---|---|---|
أدوات التحقق (NationalCode وSheba وBankCard وMobile وPostalCode وVehiclePlate) | 4096 بايت لكل نص | Result غير صالح، والخطأ input_too_long |
NumberToWords::convert() وfromWords() (مُدخَل نصي) | 4096 بايت | InvalidNumberException، input_too_long |
المُدخَل النصي لـ Format (withSeparator()) | 4096 بايت | InvalidNumberException، input_too_long |
Format::withSeparator() / format_number() | 1000 نويسة في العدد العشري العادي (أرقام الجزء الصحيح والكسري معًا) | InvalidNumberException، input_too_long |
فاصل Slugify::make() | 64 بايتاً، بترميز UTF-8 صالح | RtlyKitException (input_too_long / invalid_argument) |
نمط Jalali::format() | 256 بايتًا (Jalali::MAX_FORMAT_LENGTH) | InvalidDateException |
السقوف جزء من العقد (انظر استقرار الواجهة).
نطاقات الأعداد
| الدالة | النطاق | ما بعده |
|---|---|---|
number_to_words($n) (الفارسية، الافتراضي) | أعداد صحيحة حتى 21 رقمًا (أقل من 10^21) والأعداد السالبة | InvalidNumberException، number_too_large |
number_to_words($n, 'ar') وNumberToWords::convert($n, 'ar', $options) | أعداد صحيحة أقل من 10^27 والأعداد السالبة | InvalidNumberException، number_too_large |
NumberToWords::ordinal($n, 'ar') | من 1 إلى 99 | InvalidNumberException (invalid_number للصفر وما دونه، number_too_large فوق 99) |
number_to_words($n, 'de') أو أي لغة (locale) أخرى | fa وar فقط | UnsupportedLocaleException |
NumberToWords::convert()، Format::ordinal() | أعداد صحيحة؛ وتُقبل الأعداد العشرية ذات القيمة الصحيحة مثل 3.0 | InvalidNumberException مع 1.5 وNaN وINF |
Format::ordinal() | أعداد صحيحة غير سالبة | InvalidNumberException |
use function RtlyKit\number_to_words;
echo number_to_words(999999999, 'ar'), "\n";
// تسعمئة وتسعة وتسعون مليون وتسعمئة وتسعة وتسعون ألف وتسعمئة وتسعة وتسعون
// number_to_words(str_repeat('9', 27), 'ar') تُثير InvalidNumberException (number_too_large, limit "10^27 - 1")
// number_to_words(str_repeat('9', 22)) تُثير InvalidNumberException (number_too_large, limit "10^21 - 1")نطاقات الإعدادات
| الإعداد | النطاق | ما بعده |
|---|---|---|
HolidayCalendar::withIslamicOffset() | من -3 إلى +3 أيام | InvalidDateException |
HolidayCalendar::withHijriMonthStart() | ضمن 3 أيام من البداية المحسوبة، وبفارق 29 أو 30 يومًا عن بداية شهر مجاور أعطيته | InvalidDateException |
PrayerTimes::withTune() | من -30 إلى +30 دقيقة، أعداد صحيحة، لـ fajr وsunrise وdhuhr وasr وmaghrib وisha | InvalidPrayerConfigException |
حدود تغطية البيانات
| البيانات | التغطية |
|---|---|
| رموز BIN للبطاقات المصرفية | 39 رمز BIN؛ والبقية تُرجع null من getBankName() |
| رموز المصارف في شبا | 38 رمزاً؛ والبقية تُرجع null |
| مكان إصدار الرقم الوطني | 547 بادئة؛ والبقية تُرجع null |
| تواريخ العطل الرسمية | السنوات الجلالية 1394 و1396 إلى 1405 (رسمية)، و1380 إلى 1393 و1395 (منقولة). والسنوات الأخرى تقديرية |
مدن أوقات الصلاة (PrayerTimes::forCity()) | 14: tehran, mashhad, isfahan, shiraz, tabriz, qom, mecca, medina, riyadh, istanbul, cairo, dubai, baghdad, jakarta. ولأي مكان آخر استخدم new PrayerTimes($lat, $lng, ...). |
| طرائق أوقات الصلاة | Tehran وMWL وISNA وEgypt وMakkah وKarachi؛ ومعامل العصر 1 (القياسي) أو 2 (الحنفي) |
| أوقات الصلاة في خطوط العرض العالية | تملأ القاعدة الافتراضية الوقت الذي لا تستطيع الشمس أن تنتجه. ومع HighLatitudeRule::None يكون ذلك الوقت null وليس خطأً |
انظر الدقة والبيانات لمعرفة الأساس الذي تقوم عليه هذه الجداول.
حدود المنصة
PHP من 8.2 إلى 8.5 دون أي امتداد إضافي؛ وLaravel 11 و12 و13؛ وCarbon 3. انظر استقرار الواجهة.
Was this page helpful?