Π—Π°ΠΏΠΎΡ‡Π½Π° Π±Π΅Ρ‚Π° тСстванСто Π½Π° 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()Β»;
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠΈΡ‚ΠΎ опрСдСлят ΠΊΠΎΠ»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ Π΄Π²Π° ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Ρ‚ΠΈΠΏΠ° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Β«public function foo(Foo|Bar $input): int|float;Β»).
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ (Π°Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ), ΠΊΠΎΠΈΡ‚ΠΎ позволяват ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΌΠ΅Ρ‚Π°Π΄Π°Π½Π½ΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ информация Π·Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅Ρ‚Π΅) с класовСтС Π±Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° синтаксис Π½Π° Docblock.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΈΠ·Ρ€Π°Π·ΠΈ match, ΠΊΠΎΠΈΡ‚ΠΎ, Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ switch, ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π²Ρ€ΡŠΡ‰Π°Ρ‚ стойности, ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½Π΅ Π½Π° условия, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ строго сравнСниС Π½Π° Ρ‚ΠΈΠΏΠΎΠ²Π΅ ΠΈ Π½Π΅ изискват ΡƒΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Β«breakΒ».

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

  • Π‘ΡŠΠΊΡ€Π°Ρ‚Π΅Π½ синтаксис Π·Π° опрСдСлянС Π½Π° класовС, позволяващ обСдиняванС Π½Π° дСфиницията Π½Π° конструктора ΠΈ свойствата.
  • Нов Ρ‚ΠΈΠΏ Π²ΡŠΡ€Π½Π°Ρ‚ΠΈ стойности β€” static.
  • Нов Ρ‚ΠΈΠΏ β€” mixed, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° опрСдСлянС Π½Π° функция, ΠΏΡ€ΠΈΠ΅ΠΌΠ°Ρ‰Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π΅.
  • Π˜Π·Ρ€Π°Π· throw Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.
  • WeakMap Π·Π° създаванС Π½Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΆΠ΅Ρ€Ρ‚Π²Π° ΠΏΡ€ΠΈ ΡΡŠΠ±ΠΈΡ€Π°Π½Π΅ Π½Π° Π±ΠΎΠΊΠ»ΡƒΠΊ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π½Π΅Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΈ кСшовС).
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΈΠ·Ρ€Π°Π·Π° Β«::classΒ» Π·Π° ΠΎΠ±Π΅ΠΊΡ‚ΠΈ (Π°Π½Π°Π»ΠΎΠ³ Π½Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° get_class()).
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° опрСдСлСния Π² Π±Π»ΠΎΠΊΠ° catch Π½Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ.
  • Π’ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° оставянС Π½Π° запСтая слСд послСдния Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ Π² списъка с ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° функция.
  • Нов интСрфСйс Stringable Π·Π° ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Π½Π΅ Π½Π° всякакви класовС ΠΈΠ»ΠΈ Π΄Π°Π½Π½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π°Π½ΠΈ Π² Π½ΠΈΠ· (Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ Π΅ Π½Π°Π»ΠΈΡ‡Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ΡŠΡ‚ __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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster