Π‘Π΅Ρ‚Π° Ρ‚Π΅ΡΡ‚ΠΈΡ€Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° PHP 8 Π·Π°ΠΏΠΎΡ‡Π½Π°

Π’ΠΎΠ²Π΅Π΄Π΅Π½ΠΈ ΠΏΡ€Π²ΠΎΡ‚ΠΎ Π±Π΅Ρ‚Π° ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° Π½ΠΎΠ²Π°Ρ‚Π° Π³Ρ€Π°Π½ΠΊΠ° Π½Π° програмскиот јазик PHP 8 Π˜Π·Π΄Π°Π²Π°ΡšΠ΅Ρ‚ΠΎ Π΅ Π·Π°ΠΊΠ°ΠΆΠ°Π½ΠΎ Π·Π° 26 Π½ΠΎΠ΅ΠΌΠ²Ρ€ΠΈ. Π’ΠΎ исто Π²Ρ€Π΅ΠΌΠ΅, ΠΊΠΎΡ€Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈ изданија Π½Π° PHP 7.4.9, 7.3.21 ΠΈ
7.2.33, кој Π³ΠΈ Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π° Π°ΠΊΡƒΠΌΡƒΠ»ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ пропусти.

Π“Π»Π°Π²Π½ΠΈΡ‚Π΅ ΠΈΠ½ΠΎΠ²Π°Ρ†ΠΈΠΈ PHP 8:

  • Π’ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°ΡšΠ΅ JIT ΠΊΠΎΠΌΠΏΠ°Ρ˜Π»Π΅Ρ€, Ρ‡ΠΈΡ˜Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π° ќС ја ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ продуктивноста.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½ΠΈ функциски Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ, ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π°Ρ˜ΡœΠΈ Π²ΠΈ Π΄Π° прСнСсуватС врСдности Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° Π²ΠΎ однос Π½Π° ΠΈΠΌΠΈΡšΠ°Ρ‚Π°, Ρ‚.Π΅. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° прСнСсуватС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ ΠΏΠΎ кој Π±ΠΈΠ»ΠΎ рСдослСд ΠΈ Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΈ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈ. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "array_fill (ΠΏΠΎΡ‡Π΅Ρ‚ΠΎΠΊ_индСкс: 0, Π±Ρ€ΠΎΡ˜: 100, врСдност: 50)".
  • ΠŸΡ€ΠΈ ΠΏΠΎΠ²ΠΈΠΊΡƒΠ²Π°ΡšΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΎ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΡ‚ β€ž?β€œ, кој Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ΠΈΠ½ΠΈΡ†ΠΈΡ€Π°Ρ‚Π΅ ΠΏΠΎΠ²ΠΈΠΊ само Π°ΠΊΠΎ Π΅ присутСн ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΡ‚, со ΡˆΡ‚ΠΎ сС ΠΈΠ·Π±Π΅Π³Π½ΡƒΠ²Π°Π°Ρ‚ Π½Π΅ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π° Π²Ρ€Π°ΡœΠ°ΡšΠ΅ Π½Π° β€žΠ½ΡƒΠ»Ρ‚Π°Ρ‚Π°β€œ врСдност. На ΠΏΡ€ΠΈΠΌΠ΅Ρ€, "$dateAsString = $booking->getStartDate()?->asDateTimeString()";
  • ΠŸΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° синдикални Ρ‚ΠΈΠΏΠΎΠ²ΠΈ, Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρ˜ΡœΠΈ ΠΊΠΎΠ»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠ΄ Π΄Π²Π° ΠΈΠ»ΠΈ повСќС Ρ‚ΠΈΠΏΠ° (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, β€žΡ˜Π°Π²Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π° foo(Foo|Bar $input): int|float;β€œ).
  • ΠŸΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ (забСлСшки) ΠΊΠΎΠΈ Π²ΠΈ Π΄ΠΎΠ·Π²ΠΎΠ»ΡƒΠ²Π°Π°Ρ‚ Π΄Π° Π³ΠΈ Π²Ρ€Π·ΡƒΠ²Π°Ρ‚Π΅ ΠΌΠ΅Ρ‚Π°ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈΡ‚Π΅ (ΠΊΠ°ΠΊΠΎ ΡˆΡ‚ΠΎ сС ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ) Π·Π° класи Π±Π΅Π· Π΄Π° користитС синтакса Π½Π° Docblock.
  • ΠŸΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° ΠΈΠ·Ρ€Π°Π·ΡƒΠ²Π°ΡšΠ΅ Π½Π°Ρ‚ΠΏΡ€Π΅Π²Π°Ρ€, кој, Π·Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΠ΄ ΠΏΡ€Π΅ΠΊΠΈΠ½ΡƒΠ²Π°Ρ‡ΠΎΡ‚, ΠΌΠΎΠΆΠ΅ Π΄Π° Π²Ρ€Π°ΡœΠ° врСдности, Π΄Π° ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π° услови Π·Π° ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°ΡšΠ΅, Π΄Π° користи строги спорСдби Π½Π° Ρ‚ΠΈΠΏΠΎΠ²ΠΈ ΠΈ Π΄Π° Π½Π΅ Π±Π°Ρ€Π° ΡΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π° β€žΠΏΡ€Π΅ΠΊΠΈΠ½β€œ.

    $Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ = ΡΠΎΠ²ΠΏΠ°Ρ“Π°ΡšΠ΅($Π²Π»Π΅Π·) {
    0 => β€žΠ·Π΄Ρ€Π°Π²ΠΎβ€œ,
    '1', '2', '3' => β€žΡΠ²Π΅Ρ‚β€œ,
    };

  • Π‘ΠΊΡ€Π°Ρ‚Π΅Π½Π° синтакса Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈ Π·Π° класи, ΡˆΡ‚ΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡƒΠ²Π° Π΄Π° ја ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚Π΅ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΡ˜Π°Ρ‚Π° Π·Π° конструктор ΠΈ ΡΠ²ΠΎΡ˜ΡΡ‚Π²Π°Ρ‚Π°.
  • Нов Ρ‚ΠΈΠΏ Π½Π° Π²Ρ€Π°ΡœΠ°ΡšΠ΅ - статички.
  • Нов Ρ‚ΠΈΠΏ - мСшани, ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° сС користи Π·Π° Π΄Π° сС ΡƒΡ‚Π²Ρ€Π΄ΠΈ Π΄Π°Π»ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° ΠΏΡ€ΠΈΡ„Π°ΡœΠ° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ ΠΎΠ΄ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ‚ΠΈΠΏΠΎΠ²ΠΈ.
  • Π˜Π·Ρ€Π°Π·ΡƒΠ²Π°ΡšΠ΅ Ρ„Ρ€Π»ΠΈ Π΄Π° сС справи со исклучоцитС.
  • Π‘Π»Π°Π±Π° ΠΊΠ°Ρ€Ρ‚Π° Π΄Π° сС создадат ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΈ ΡˆΡ‚ΠΎ ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° сС ΠΆΡ€Ρ‚Π²ΡƒΠ²Π°Π°Ρ‚ Π·Π° Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΡΠΎΠ±ΠΈΡ€Π°ΡšΠ΅ Ρ“ΡƒΠ±Ρ€Π΅ (Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π° ΡΠΊΠ»Π°Π΄ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π½Π΅ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ кСшови).
  • ΠœΠΎΠΆΠ½ΠΎΡΡ‚ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅Ρ˜ΡœΠΈ Π³ΠΎ ΠΈΠ·Ρ€Π°Π·ΠΎΡ‚ β€ž::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

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