PHP 8 ning beta-sinovi boshlandi

Tanishtirdi ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π±Π΅Ρ‚Π°-выпуск Π½ΠΎΠ²ΠΎΠΉ Π²Π΅Ρ‚ΠΊΠΈ языка программирования PHP 8. Π Π΅Π»ΠΈΠ· Π½Π°ΠΌΠ΅Ρ‡Π΅Π½ Π½Π° 26 ноября. ΠžΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ сформированы ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ выпуски PHP 7.4.9, 7.3.21 ΠΈ
7.2.33, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… устранСны накопившиСся ошибки ΠΈ уязвимости.

asosiy yangiliklar PHP 8:

  • Faollashtirish JIT kompilyatori, ulardan foydalanish samaradorlikni oshiradi.
  • qo'llab-quvvatlash ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π²Π°Ρ‚ΡŒ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ значСния Π² привязкС ΠΊ ΠΈΠΌΠ΅Π½Π°ΠΌ, Ρ‚.Π΅. ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π² ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌ порядкС ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹. НапримСр, Β«array_fill(start_index: 0, num: 100, value: 50)Β».
  • ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ruxsat berilgan ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° Β«?Β», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Ρ‹Π·ΠΎΠ² Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ссли ΠΌΠ΅Ρ‚ΠΎΠ΄ присутствуСт, Ρ‡Ρ‚ΠΎ позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π»ΠΈΡˆΠ½ΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ Π½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚ значСния Β«nullΒ». НапримСр, Β«$dateAsString = $booking->getStartDate()?->asDateTimeString()Β»;
  • qo'llab-quvvatlash birlashma turlari, ikki yoki undan ortiq turdagi to'plamlarni aniqlash (masalan, β€œommaviy funktsiya foo(Foo|Bar $input): int|float;”).
  • qo'llab-quvvatlash atributlar Docblock sintaksisidan foydalanmasdan metama'lumotlarni (masalan, turdagi ma'lumotlar) sinflarga bog'lash imkonini beruvchi (annotatsiyalar).
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ match, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ switch ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ значСния, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ условий, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ строгоС сравнСниС Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ указания Β«breakΒ».

    $result = match($input) {
    0 => Β«helloΒ»,
    β€˜1’, β€˜2’, β€˜3’ => Β«worldΒ»,
    };

  • Qisqartirilgan sintaksis konstruktor va xususiyatlarning ta'rifini birlashtirishga imkon beruvchi sinf ta'riflari.
  • Yangi qaytish turi - statik.
  • Yangi tur - aralash, bu funksiya har xil turdagi parametrlarni qabul qiladimi yoki yo'qligini aniqlash uchun ishlatilishi mumkin.
  • So'zlashuv otish istisnolarni hal qilish uchun.
  • Zaif xarita axlat yig'ish paytida qurbon bo'lishi mumkin bo'lgan ob'ektlarni yaratish (masalan, keraksiz keshlarni saqlash uchun).
  • imkoniyat ob'ektlar uchun "::class" iborasidan foydalanish (get_class() chaqiruviga o'xshash).
  • imkoniyat o'zgaruvchilarga bog'lanmagan istisnolar blokidagi ta'riflar.
  • imkoniyat funktsiya parametrlari ro'yxatidagi oxirgi elementdan keyin vergul qo'yish.
  • Yangi interfeys Tarmoqli satrga aylantirilishi mumkin bo'lgan har qanday satr turlarini yoki ma'lumotlarini aniqlash uchun (bular uchun __toString() usuli mavjud).
  • Yangi xususiyat str_contains(), pastki qatorning paydo bo'lishini aniqlash uchun strpos ning soddalashtirilgan analogi, shuningdek, satr boshida va oxirida mosliklarni tekshirish uchun str_starts_with() va str_ends_with() funktsiyalari.
  • Qo'shilgan funksiya fdiv(), nolga bo'lishda xatolikka yo'l qo'ymasdan bo'lish amalini bajaradi.
  • O'zgartirildi satrlarni birlashtirish mantig'i. Masalan, 'echo "sum:" iborasi. $a + $b' avval 'echo ("sum: " . $a) + $b' sifatida talqin qilingan va PHP 8 da 'echo "sum:" sifatida ko'rib chiqiladi. ($a + $b)'.
  • Qattiqlashtirilgan arifmetik va bit operatsiyalarini tekshirish, masalan, "[] % [42]" va "$object + 4" iboralari xatolikka olib keladi.
  • Amalga oshirildi barqaror saralash algoritmi, unda bir xil qiymatlar tartibi turli xil yugurishlarda saqlanadi.
  • Manba: opennet.ru

a Izoh qo'shish