Пачалося бэта-тэставанне PHP 8

Прадстаўлены першы бэта-выпуск новай галінкі мовы праграмавання PHP 8. Рэліз вызначаны на 26 лістапада. Адначасова сфарміраваны карэкціруючыя выпускі PHP 7.4.9, 7.3.21 і
7.2.33, у якіх ухілены назапашаныя памылкі і ўразлівасці.

Асноўныя навіны PHP 8:

  • ўключэнне JIT-кампілятара, Ужыванне якога дазволіць павысіць прадукцыйнасць.
  • Падтрымка найменных аргументаў функцый, якія дазваляюць перадаваць у функцыю значэння ў прывязцы да імёнаў, г.зн. можна перадаваць аргументы ў адвольным парадку і вызначаць неабавязковыя аргументы. Напрыклад, "array_fill(start_index: 0, num: 100, value: 50)".
  • Пры выкліку метадаў дазволена ужыванне аператара "?", які дазваляе ініцыяваць выклік толькі, калі метад прысутнічае, што дазваляе пазбегнуць лішніх праверак на зварот значэння "null". Напрыклад, "$dateAsString = $booking->getStartDate()?->asDateTimeString()";
  • Падтрымка union-тыпаў, вызначальных калекцыі з двух і больш тыпаў (напрыклад "public function foo(Foo|Bar $input): int|float;").
  • Падтрымка атрыбутаў (анатацый), якія дазваляюць прывязаць метададзеныя (напрыклад, звесткі аб тыпах) да класаў без выкарыстання сінтаксісу Docblock.
  • Падтрымка выразаў адпавядаць, якія ў адрозненне ад switch могуць вяртаць значэнні, падтрымліваюць камбінаванне ўмоў, выкарыстоўваюць строгае параўнанне тыпаў і не патрабуюць указанні "break".

    $result = match($input) {
    0 => "hello",
    '1', '2', '3' => "world",
    };

  • Скарочаны сінтаксіс азначэнні класаў, які дазваляе аб'яднаць вызначэнне канструктара і ўласцівасцяў.
  • Новы тып якія вяртаюцца значэнняў статычны.
  • Новы тып - змешаны, які можа прымяняцца для вызначэння прыёму функцыяй параметраў з рознымі тыпамі.
  • выраз кідаць для апрацоўкі выключэнняў.
  • WeakMap для стварэння аб'ектаў, якімі можна ахвяраваць пры зборцы смецця (напрыклад, для захоўвання неабавязковых кэшаў).
  • Магчымасць выкарыстання выраза "::class" для аб'ектаў (аналаг выкліку get_class()).
  • Магчымасць азначэнні ў блоку catch выключэнняў, не прывязаных да зменных.
  • Магчымасць пакідання сімвала коскі пасля апошняга элемента ў спісе параметраў функцыі.
  • Новы інтэрфейс Наструнны для ідэнтыфікацыі любых радковых тыпаў ці дадзеных, якіх можна пераўтварыць у радок (для якіх даступны метад__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

Дадаць каментар