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

เปเบ™เบฐเบ™เบณ เบเบฒเบ™เบ›เปˆเบญเบเป€เบšเบ•เป‰เบฒเบ—เปเบฒเบญเบดเบ”เบ‚เบญเบ‡เบชเบฒเบ‚เบฒเปƒเบซเบกเปˆเบ‚เบญเบ‡เบžเบฒเบชเบฒเบเบฒเบ™เบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบก PHP 8 เบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบงเปเบกเปˆเบ™เบเปเบฒเบ™เบปเบ”เบชเปเบฒเบฅเบฑเบšเป€เบ”เบทเบญเบ™เบžเบฐเบˆเบดเบ 26. เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™, เบเบฒเบ™เปเบเป‰เป„เบ‚เบเบฒเบ™เปเบเป‰เป„เบ‚ PHP 7.4.9, 7.3.21 เปเบฅเบฐ
7.2.33, เป€เบŠเบดเปˆเบ‡เบฅเบปเบšเบฅเป‰เบฒเบ‡เบ„เบงเบฒเบกเบœเบดเบ”เบžเบฒเบ”เบ—เบตเปˆเบชเบฐเบชเบปเบกเปเบฅเบฐเบˆเบธเบ”เบญเปˆเบญเบ™.

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

  • เบฅเบงเบก JIT compiler, เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ—เบตเปˆเบˆเบฐเบ›เบฑเบšเบ›เบธเบ‡เบœเบปเบ™เบœเบฐเบฅเบดเบ”.
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ arguments function เบ—เบตเปˆเบกเบตเบŠเบทเปˆ, เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบ„เปˆเบฒเป„เบ›เบซเบฒเบซเบ™เป‰เบฒเบ—เบตเปˆเบ—เบตเปˆเบเปˆเบฝเบงเบ‚เป‰เบญเบ‡เบเบฑเบšเบŠเบทเปˆ, i.e. เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบœเปˆเบฒเบ™เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เปƒเบ”เป†เปเบฅเบฐเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบ. เบ•เบปเบงเบขเปˆเบฒเบ‡, "array_fill(start_index: 0, num: 100, value: 50)".
  • เปƒเบ™เป€เบงเบฅเบฒเป‚เบ—เบซเบฒเบงเบดเบ—เบตเบเบฒเบ™ เบญเบฐเบ™เบธเบเบฒเบ” เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™ "?", เป€เบŠเบดเปˆเบ‡เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบเบฒเบ™เป‚เบ—เป„เบ”เป‰เบžเบฝเบ‡เปเบ•เปˆเบ–เป‰เบฒเบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆ, เป€เบŠเบดเปˆเบ‡เบซเบฅเบตเบเบฅเป‰เบฝเบ‡เบเบฒเบ™เบเบงเบ”เบชเบญเบšเบ—เบตเปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบชเบปเปˆเบ‡เบ„เบทเบ™เบ„เปˆเบฒ "null". เบ•เบปเบงเบขเปˆเบฒเบ‡, "$dateAsString = $booking->getStartDate()?->asDateTimeString()";
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ เบ›เบฐเป€เบžเบ”เบชเบฐเบซเบฐเบžเบฑเบ™, เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบ„เปเป€เบฅเบฑเบเบŠเบฑเบ™เบ‚เบญเบ‡เบชเบญเบ‡เบ›เบฐเป€เบžเบ” เบซเบผเบทเบซเบผเบฒเบเบเบงเปˆเบฒเบ™เบฑเป‰เบ™ (เบ•เบปเบงเบขเปˆเบฒเบ‡, โ€œfoo foo(Foo|Bar $input): int|float;โ€).
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™ เบ„เบธเบ™โ€‹เบฅเบฑเบโ€‹เบชเบฐโ€‹เบ™เบฐ (เบ„เปเบฒเบšเบฑเบ™เบเบฒเบ) เบ—เบตเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบœเบนเบเบกเบฑเบ” metadata (เป€เบŠเบฑเปˆเบ™: เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเป€เบžเบ”) เบเบฑเบšเบซเป‰เบญเบ‡เบฎเบฝเบ™เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰ Docblock syntax.
  • เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เบเบฒเบ™เบชเบฐเปเบ”เบ‡เบญเบญเบ เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™, เป€เบŠเบดเปˆเบ‡, เบšเปเปˆเป€เบซเบกเบทเบญเบ™เบเบฑเบšเบชเบฐเบซเบผเบฑเบš, เบชเบฒเบกเบฒเบ”เบชเบปเปˆเบ‡เบ„เบทเบ™เบ„เปˆเบฒ, เบชเบฐเบซเบ™เบฑเบšเบชเบฐเบซเบ™เบนเบ™เป€เบ‡เบทเปˆเบญเบ™เป„เบ‚เบเบฒเบ™เบชเบปเบกเบ—เบปเบš, เปƒเบŠเป‰เบเบฒเบ™เบ›เบฝเบšเบ—เบฝเบšเบ›เบฐเป€เบžเบ”เบ—เบตเปˆเป€เบ„เบฑเปˆเบ‡เบ„เบฑเบ”, เปเบฅเบฐเบšเปเปˆเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบต "เบžเบฑเบเบœเปˆเบญเบ™".

    $result = match($input) {
    0 => "เบชเบฐเบšเบฒเบเบ”เบต",
    '1', '2', '3' => "เป‚เบฅเบ",
    };

  • เบซเบเปเป‰ 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

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