Π‘Π΅Ρ‚Π° Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° 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()Β»;
  • ΠŸΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° синдикални Ρ‚ΠΈΠΏΠΎΠ²ΠΈ, Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ˜ΡœΠΈ ΠΊΠΎΠ»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ΄ Π΄Π²Π° ΠΈΠ»ΠΈ повСќС Ρ‚ΠΈΠΏΠ° (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, β€žΡ˜Π°Π²Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° foo(Foo|Bar $input): int|float;β€œ).
  • ΠŸΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ (забСлСшки) ΠΊΠΎΠΈ Π²ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΡƒΠ²Π°Π°Ρ‚ Π΄Π° Π³ΠΈ Π²Ρ€Π·ΡƒΠ²Π°Ρ‚Π΅ ΠΌΠ΅Ρ‚Π°ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ (ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ) Π·Π° класи Π±Π΅Π· Π΄Π° користитС синтакса Π½Π° Docblock.
  • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ Π½Π°Ρ‚ΠΏΡ€Π΅Π²Π°Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ switch ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ значСния, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ условий, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ строгоС сравнСниС Ρ‚ΠΈΠΏΠΎΠ² ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ указания Β«breakΒ».

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

  • Π‘ΠΊΡ€Π°Ρ‚Π΅Π½Π° синтакса Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ Π·Π° класи, ΡˆΡ‚ΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ја ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° конструктор ΠΈ ΡΠ²ΠΎΡ˜ΡΡ‚Π²Π°Ρ‚Π°.
  • Нов Ρ‚ΠΈΠΏ Π½Π° Π²Ρ€Π°ΡœΠ°ΡšΠ΅ - статички.
  • Нов Ρ‚ΠΈΠΏ - мСшани, ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи Π·Π° Π΄Π° сС ΡƒΡ‚Π²Ρ€Π΄ΠΈ Π΄Π°Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° ΠΏΡ€ΠΈΡ„Π°ΡœΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΎΠ΄ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ.
  • Π˜Π·Ρ€Π°Π·ΡƒΠ²Π°ΡšΠ΅ Ρ„Ρ€Π»ΠΈ Π΄Π° сС справи со исклучоцитС.
  • Π‘Π»Π°Π±Π° ΠΊΠ°Ρ€Ρ‚Π° Π΄Π° сС создадат ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΈ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° сС ΠΆΡ€Ρ‚Π²ΡƒΠ²Π°Π°Ρ‚ Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΡΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ“ΡƒΠ±Ρ€Π΅ (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π½Π΅ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ кСшови).
  • ΠœΠΎΠΆΠ½ΠΎΡΡ‚ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΎ ΠΈΠ·Ρ€Π°Π·ΠΎΡ‚ β€ž::classβ€œ Π·Π° ΠΎΠ±Ρ˜Π΅ΠΊΡ‚ΠΈ (Π°Π½Π°Π»ΠΎΠ³Π½ΠΎ Π½Π° ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ get_class()).
  • ΠœΠΎΠΆΠ½ΠΎΡΡ‚ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ Π²ΠΎ Π±Π»ΠΎΠΊΠΎΡ‚ Π·Π° Ρ„Π°ΡœΠ°ΡšΠ΅ исклучоци ΠΊΠΎΠΈ Π½Π΅ сС Π²Ρ€Π·Π°Π½ΠΈ Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ.
  • ΠœΠΎΠΆΠ½ΠΎΡΡ‚ ΠΎΡΡ‚Π°Π²Π°Ρ˜ΡœΠΈ Π·Π°ΠΏΠΈΡ€ΠΊΠ° ΠΏΠΎ послСдниот Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ Π²ΠΎ листата Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π°.
  • Нов ΠΈΠ½Ρ‚Π΅Ρ€Ρ„Π΅Ρ˜Ρ Π‘Ρ‚Ρ€ΠΈΠ½Π³Π»ΠΈΠ² Π·Π° Π΄Π° сС ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΡƒΠ²Π°Π°Ρ‚ ситС Ρ‚ΠΈΠΏΠΎΠ²ΠΈ Π½Π° стрингови ΠΈΠ»ΠΈ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΏΡ€Π΅Ρ‚Π²ΠΎΡ€Π°Ρ‚ Π²ΠΎ стринг (Π·Π° кој Π΅ достапСн ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΡ‚ __toString().
  • Нова Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° str_contains(), поСдноставСн Π°Π½Π°Π»ΠΎΠ³ Π½Π° strpos Π·Π° ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π°ΡšΠ΅ Π½Π° појава Π½Π° ΠΏΠΎΠ΄Π½ΠΈΠ·Π°, ΠΊΠ°ΠΊΠΎ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ str_starts_with() ΠΈ str_ends_with() Π·Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΡΠΎΠ²ΠΏΠ°Ρ“Π°ΡšΠ°Ρ‚Π° Π½Π° ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊΠΎΡ‚ ΠΈ ΠΊΡ€Π°Ρ˜ΠΎΡ‚ Π½Π° Π½ΠΈΠ·Π°Ρ‚Π°.
  • Π”ΠΎΠ΄Π°Π΄Π΅Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° fdiv (), кој Π²Ρ€ΡˆΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° дСлСњС Π±Π΅Π· Π΄Π° Ρ„Ρ€Π»ΠΈ Π³Ρ€Π΅ΡˆΠΊΠ° ΠΏΡ€ΠΈ дСлСњС со Π½ΡƒΠ»Π°.
  • Π‘ΠΌΠ΅Π½Π΅Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° ΡΠΏΠΎΡ˜ΡƒΠ²Π°ΡšΠ΅ Π½ΠΈΠ·Π°. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·Ρ€Π°Π·ΠΎΡ‚ β€žΠ΅Ρ…ΠΎ β€žΠ·Π±ΠΈΡ€:β€œ . $a + $b' ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½ΠΎ бСшС ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€Π°Π½ΠΎ ΠΊΠ°ΠΊΠΎ 'echo ("sum: " . $a) + $b', Π° Π²ΠΎ PHP 8 ќС сС Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π° ΠΊΠ°ΠΊΠΎ 'echo "sum: " . ($a + $b)'.
  • Π—Π°Ρ‚Π΅Π³Π½Π°Ρ‚ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Π°Ρ€ΠΈΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‡ΠΊΠΈΡ‚Π΅ ΠΈ битскитС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ·Ρ€Π°Π·ΠΈΡ‚Π΅ β€ž[] % [42]β€œ ΠΈ β€ž$object + 4β€œ ќС Ρ€Π΅Π·ΡƒΠ»Ρ‚ΠΈΡ€Π°Π°Ρ‚ со Π³Ρ€Π΅ΡˆΠΊΠ°.
  • Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ стабилСн Π°Π»Π³ΠΎΡ€ΠΈΡ‚Π°ΠΌ Π·Π° ΡΠΎΡ€Ρ‚ΠΈΡ€Π°ΡšΠ΅ Π²ΠΎ кој сС Π·Π°Ρ‡ΡƒΠ²ΡƒΠ²Π° рСдослСдот Π½Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΈ врСдности Π½ΠΈΠ· Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΠ°Ρ‚Π΅ΠΊΠΈ.
  • Π˜Π·Π²ΠΎΡ€: opennet.ru

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€