เบเบฒเบ™เบ—เบปเบ”เบชเบญเบšเป€เบšเบ•เป‰เบฒเบ‚เบญเบ‡ PHP 8 เป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เปเบฅเป‰เบง

เปเบ™เบฐเบ™เบณ ะฟะตั€ะฒั‹ะน ะฑะตั‚ะฐ-ะฒั‹ะฟัƒัะบ ะฝะพะฒะพะน ะฒะตั‚ะบะธ ัะทั‹ะบะฐ ะฟั€ะพะณั€ะฐะผะผะธั€ะพะฒะฐะฝะธั PHP 8. ะ ะตะปะธะท ะฝะฐะผะตั‡ะตะฝ ะฝะฐ 26 ะฝะพัะฑั€ั. ะžะดะฝะพะฒั€ะตะผะตะฝะฝะพ ัั„ะพั€ะผะธั€ะพะฒะฐะฝั‹ ะบะพั€ั€ะตะบั‚ะธั€ัƒัŽั‰ะธะต ะฒั‹ะฟัƒัะบะธ PHP 7.4.9, 7.3.21 ะธ
7.2.33, ะฒ ะบะพั‚ะพั€ั‹ั… ัƒัั‚ั€ะฐะฝะตะฝั‹ ะฝะฐะบะพะฟะธะฒัˆะธะตัั ะพัˆะธะฑะบะธ ะธ ัƒัะทะฒะธะผะพัั‚ะธ.

เบ•เบปเป‰เบ™โ€‹เบ•เป เบ™เบฐเบงเบฑเบ”เบ•เบฐเบเปเบฒ PHP 8:

  • เบฅเบงเบก JIT compiler, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”.
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ ะธะผะตะฝะพะฒะฐะฝะฝั‹ั… ะฐั€ะณัƒะผะตะฝั‚ะพะฒ ั„ัƒะฝะบั†ะธะน, ะฟะพะทะฒะพะปััŽั‰ะธั… ะฟะตั€ะตะดะฐะฒะฐะฒะฐั‚ัŒ ะฒ ั„ัƒะฝะบั†ะธัŽ ะทะฝะฐั‡ะตะฝะธั ะฒ ะฟั€ะธะฒัะทะบะต ะบ ะธะผะตะฝะฐะผ, ั‚.ะต. ะผะพะถะฝะพ ะฟะตั€ะตะดะฐะฒะฐั‚ัŒ ะฐั€ะณัƒะผะตะฝั‚ั‹ ะฒ ะฟั€ะพะธะทะฒะพะปัŒะฝะพะผ ะฟะพั€ัะดะบะต ะธ ะพะฟั€ะตะดะตะปัั‚ัŒ ะฝะตะพะฑัะทะฐั‚ะตะปัŒะฝั‹ะต ะฐั€ะณัƒะผะตะฝั‚ั‹. ะะฐะฟั€ะธะผะตั€, ยซarray_fill(start_index: 0, num: 100, value: 50)ยป.
  • ะŸั€ะธ ะฒั‹ะทะพะฒะต ะผะตั‚ะพะดะพะฒ เบญเบฐเบ™เบธเบเบฒเบ” ะฟั€ะธะผะตะฝะตะฝะธะต ะพะฟะตั€ะฐั‚ะพั€ะฐ ยซ?ยป, ะบะพั‚ะพั€ั‹ะน ะฟะพะทะฒะพะปัะตั‚ ะธะฝะธั†ะธะธั€ะพะฒะฐั‚ัŒ ะฒั‹ะทะพะฒ ั‚ะพะปัŒะบะพ, ะตัะปะธ ะผะตั‚ะพะด ะฟั€ะธััƒั‚ัั‚ะฒัƒะตั‚, ั‡ั‚ะพ ะฟะพะทะฒะพะปัะตั‚ ะธะทะฑะตะถะฐั‚ัŒ ะปะธัˆะฝะธั… ะฟั€ะพะฒะตั€ะพะบ ะฝะฐ ะฒะพะทะฒั€ะฐั‚ ะทะฝะฐั‡ะตะฝะธั ยซnullยป. ะะฐะฟั€ะธะผะตั€, ยซ$dateAsString = $booking->getStartDate()?->asDateTimeString()ยป;
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ เบ›เบฐเป€เบžเบ”เบชเบฐเบซเบฐเบžเบฑเบ™, เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ„เปเป€เบฅเบฑเบเบŠเบฑเบ™เบ‚เบญเบ‡เบชเบญเบ‡เบ›เบฐเป€เบžเบ” เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเบ™เบฑเป‰เบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡, โ€œfoo foo(Foo|Bar $input): int|float;โ€).
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐ (เบ„เปเบฒเบšเบฑเบ™เบเบฒเบ) เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบœเบนเบเบกเบฑเบ” metadata (เป€เบŠเบฑเปˆเบ™: เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเป€เบžเบ”) เบเบฑเบšเบซเป‰เบญเบ‡เบฎเบฝเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ Docblock syntax.
  • ะŸะพะดะดะตั€ะถะบะฐ ะฒั‹ั€ะฐะถะตะฝะธะน เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™, ะบะพั‚ะพั€ั‹ะต ะฒ ะพั‚ะปะธั‡ะธะต ะพั‚ switch ะผะพะณัƒั‚ ะฒะพะทะฒั€ะฐั‰ะฐั‚ัŒ ะทะฝะฐั‡ะตะฝะธั, ะฟะพะดะดะตั€ะถะธะฒะฐัŽั‚ ะบะพะผะฑะธะฝะธั€ะพะฒะฐะฝะธะต ัƒัะปะพะฒะธะน, ะธัะฟะพะปัŒะทัƒัŽั‚ ัั‚ั€ะพะณะพะต ัั€ะฐะฒะฝะตะฝะธะต ั‚ะธะฟะพะฒ ะธ ะฝะต ั‚ั€ะตะฑัƒัŽั‚ ัƒะบะฐะทะฐะฝะธั ยซbreakยป.

    $result = match($input) {
    0 => ยซhelloยป,
    โ€˜1โ€™, โ€˜2โ€™, โ€˜3โ€™ => ยซworldยป,
    };

  • เบซเบเปเป‰ syntax เบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบŠเบฑเป‰เบ™, เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบปเบกเบ—เบปเบšเบ„เปเบฒเบ™เบดเบเบฒเบกเบ‚เบญเบ‡เบ•เบปเบงเบชเป‰เบฒเบ‡เปเบฅเบฐเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”.
  • เบ›เบฐเป€เบžเบ”เบ„เบทเบ™เปƒเบซเบกเปˆ - เป„เบŸเบŸเป‰เบฒเบชเบฐเบ–เบดเบ”.
  • เบ›เบฐโ€‹เป€เบžเบ”โ€‹เปƒเบซเบกเปˆ - เบ›เบฐเบชเบปเบก, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบเบญเบกเบฎเบฑเบšเบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบ‚เบญเบ‡เบ›เบฐเป€เบžเบ”เบ•เปˆเบฒเบ‡เป†.
  • เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ เบ–เบดเป‰เบก เป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™.
  • WeakMap เป€เบžเบทเปˆเบญเบชเป‰เบฒเบ‡เบงเบฑเบ”เบ–เบธเบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบชเบเบชเบฐเบฅเบฐเป„เบ”เป‰เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เป€เบเบฑเบšเบ‚เบตเป‰เป€เบซเบเบทเป‰เบญ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ–เบฒเบ™เบ„เบงเบฒเบกเบˆเปเบฒเบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™).
  • เป‚เบญเบเบฒเบ” เบเบฒเบ™โ€‹เบ™เปเบฒโ€‹เปƒเบŠเป‰โ€‹เบชเปเบฒโ€‹เบฅเบฑเบš "::classโ€‹" เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบงเบฑเบ”โ€‹เบ–เบธ (เบเบฒเบ™โ€‹เบ›เบฝเบšโ€‹เบ—เบฝเบšโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เป€เบญเบตเป‰เบ™ get_class()โ€‹)โ€‹.
  • เป‚เบญเบเบฒเบ” เบ„เปเบฒเบ™เบดเบเบฒเบกเปƒเบ™เบ•เบฑเบ™เบˆเบฑเบšเบ‚เบญเบ‡เบ‚เปเป‰เบเบปเบเป€เบงเบฑเป‰เบ™เบ—เบตเปˆเบšเปเปˆเป„เบ”เป‰เบœเบนเบเบกเบฑเบ”เบเบฑเบšเบ•เบปเบงเปเบ›.
  • เป‚เบญเบเบฒเบ” เบญเบญเบเบˆเบฒเบเป€เบ„เบทเปˆเบญเบ‡เปเบฒเบเบˆเบธเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบญเบปเบ‡เบ›เบฐเบเบญเบšเบชเบธเบ”เบ—เป‰เบฒเบเปƒเบ™เบฅเบฒเบเบเบฒเบ™เบžเบฒเบฅเบฒเบกเบดเป€เบ•เบตเบŸเบฑเบ‡เบŠเบฑเบ™.
  • เบเบฒเบ™เป‚เบ•เป‰เบ•เบญเบšเปƒเบซเบกเปˆ เบชเบฒเบกเบฒเบ”เปƒเบชเปˆเบชเบฒเบเป„เบ”เป‰ เป€เบžเบทเปˆเบญเบฅเบฐเบšเบธเบ›เบฐเป€เบžเบ”เบชเบฐเบ•เบฃเบดเบ‡ เบซเบผเบทเบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เป€เบ›เบฑเบ™เบชเบฐเบ•เบฃเบดเบ‡ (เป€เบŠเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™ __toString() เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰).
  • เบ„เบธเบ™เบ™เบฐเบชเบปเบกเบšเบฑเบ”เปƒเบซเบกเปˆ str_contains(), เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเปเบšเบšเบ‡เปˆเบฒเบเบ”เบฒเบเบ‚เบญเบ‡ strpos เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ›เบฐเบเบปเบ”เบ•เบปเบงเบ‚เบญเบ‡เบชเบฒเบเบเปˆเบญเบ, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบซเบ™เป‰เบฒเบ—เบตเปˆ str_starts_with() เปเบฅเบฐ str_ends_with() เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบˆเบฑเบšเบ„เบนเปˆเปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เปเบฅเบฐเบ—เป‰เบฒเบเบ‚เบญเบ‡ string.
  • เป€เบžเบตเปˆเบกเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ” fdiv(), เป€เบŠเบดเปˆเบ‡เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปเบšเปˆเบ‡เบชเปˆเบงเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ–เบดเป‰เบกเบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เปเบšเปˆเบ‡เบ”เป‰เบงเบเบชเบนเบ™.
  • เบ›เปˆเบฝเบ™เปเบ›เบ‡ เบชเบฐเบ•เบดเบ‡เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเป€เบซเบ”เบœเบปเบ™. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ 'echo "sum:". $a + $b' เป„เบ”เป‰เบ–เบทเบเบ•เบตเบ„เบงเบฒเบกเบงเปˆเบฒ 'echo ("sum: ". $a) + $b', เปเบฅเบฐเปƒเบ™ PHP 8 เบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เป€เบ›เบฑเบ™ 'echo "sum:" . ($a + $b)'.
  • เป€เบ„เบฑเปˆเบ‡เบ„เบฑเบ” เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบฅเบเบ„เบฐเบ™เบดเบ”เปเบฅเบฐเบšเบดเบ”, เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเบปเบเบ•เบปเบงเบขเปˆเบฒเบ‡, เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ "[] % [42]" เปเบฅเบฐ "$object + 4" เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เป€เบเบตเบ”เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”.
  • เบ›เบฐเบ•เบดเบšเบฑเบ” เบชเบนเบ”เบเบฒเบ™เบฎเบฝเบ‡เบฅเบณเบ”เบฑเบšเบ—เบตเปˆเบ„เบปเบ‡เบ—เบตเปˆเบ—เบตเปˆเบฅเบณเบ”เบฑเบšเบ‚เบญเบ‡เบ„เปˆเบฒเบ—เบตเปˆเบ„เบทเบเบฑเบ™เบ–เบทเบเบฎเบฑเบเบชเบฒเป„เบงเป‰เปƒเบ™เบ—เบปเปˆเบงเป„เบฅเบเบฐเบ•เปˆเบฒเบ‡เป†.
  • เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: opennet.ru

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™