تست بتا PHP 8 آغاز شده است

ارسال شده توسط اولین نسخه بتا از شاخه جدید زبان برنامه نویسی PHP 8. انتشار برای 26 نوامبر برنامه ریزی شده است. در همان زمان، نسخه های اصلاحی PHP 7.4.9، 7.3.21 و
7.2.33 که خطاها و آسیب پذیری های انباشته شده را از بین برد.

اصلی نوآوری ها PHP 8:

  • گنجاندن کامپایلر JITکه استفاده از آن باعث بهبود بهره وری می شود.
  • پشتیبانی آرگومان های تابع نامگذاری شده، به شما این امکان را می دهد که مقادیری را در رابطه با نام ها به تابع منتقل کنید، به عنوان مثال. شما می توانید آرگومان ها را به هر ترتیبی ارسال کنید و آرگومان های اختیاری را تعریف کنید. به عنوان مثال، "array_fill(start_index: 0، تعداد: 100، مقدار: 50)".
  • هنگام فراخوانی روش ها مجاز است با استفاده از عملگر "؟"، که به شما امکان می دهد فقط در صورت وجود روش، تماس را آغاز کنید، که از بررسی های غیر ضروری برای بازگرداندن مقدار "تهی" جلوگیری می کند. به عنوان مثال، "$dateAsString = $booking->getStartDate()?->asDateTimeString()";
  • پشتیبانی انواع اتحادیه، مجموعه هایی از دو یا چند نوع را تعریف می کند (به عنوان مثال، "عمومی تابع foo(Foo|Bar $input): int|float;").
  • پشتیبانی ویژگی های (توضیحات) که به شما امکان می دهد ابرداده (مانند اطلاعات نوع) را بدون استفاده از نحو Docblock به کلاس ها متصل کنید.
  • پشتیبانی از بیان همخوانی داشتن، که بر خلاف سوئیچ، می تواند مقادیر را برگرداند، از شرایط ترکیبی پشتیبانی می کند، از مقایسه نوع سختگیرانه استفاده می کند، و به مشخصات "شکستن" نیاز ندارد.

    $نتیجه = مطابقت ($ورودی) {
    0 => "سلام"،
    '1', '2', '3' => "جهان"،
    };

  • نحو کوتاه شده تعاریف کلاس، به شما امکان می دهد تعریف سازنده و خصوصیات را ترکیب کنید.
  • نوع بازگشت جدید - ایستا.
  • نوع جدید - مخلوط، که می تواند برای تعیین اینکه آیا یک تابع پارامترهای انواع مختلف را می پذیرد یا خیر استفاده می شود.
  • بیان پرتاب برای رسیدگی به استثناها
  • نقشه ضعیف برای ایجاد اشیایی که می توانند در طول جمع آوری زباله قربانی شوند (به عنوان مثال، برای ذخیره کش های غیر ضروری).
  • فرصت با استفاده از عبارت “::class” برای اشیا (مشابه با فراخوانی get_class()).
  • فرصت تعاریف در بلوک catch استثناهایی که به متغیرها محدود نمی شوند.
  • فرصت گذاشتن یک کاما بعد از آخرین عنصر در لیست پارامترهای تابع.
  • New Interfeys رشته ای برای شناسایی هر نوع رشته یا داده ای که می تواند به رشته تبدیل شود (که متد __toString() برای آن موجود است).
  • ویژگی جدید str_contains()، یک آنالوگ ساده شده از strpos برای تعیین وقوع یک رشته فرعی، و همچنین توابع str_starts_with() و str_ends_with() برای بررسی تطابقات در ابتدا و انتهای یک رشته.
  • عملکرد اضافه شده است fdiv()، که عملیات تقسیم را بدون خطا در هنگام تقسیم بر صفر انجام می دهد.
  • تغییر کرد منطق اتصال رشته به عنوان مثال، عبارت 'echo "sum:" . $a + $b قبلاً به عنوان 'echo ("sum: " . $a) + $b" تعبیر می شد و در PHP 8 به عنوان "echo "sum:" تلقی می شود. ($a + $b)'.
  • سفت شد برای مثال، بررسی عملیات‌های حسابی و بیتی، عبارات "[] % [42]" و "$object + 4" منجر به خطا می‌شود.
  • اجرا شد یک الگوریتم مرتب‌سازی پایدار که در آن ترتیب مقادیر یکسان در اجراهای مختلف حفظ می‌شود.
  • منبع: opennet.ru

اضافه کردن نظر