Nagsimula na ang beta testing ng PHP 8

Ipinasa ni ang unang beta release ng bagong branch ng PHP 8 programming language. Ang release ay naka-iskedyul para sa Nobyembre 26. Kasabay nito, ang mga corrective release ng PHP 7.4.9, 7.3.21 at
7.2.33, na nag-alis ng mga naipon na error at kahinaan.

Ang pangunahing mga inobasyon PHP 8:

  • Pag-enable JIT compiler, ang paggamit nito ay magpapahusay sa pagiging produktibo.
  • Suporta pinangalanang mga argumento ng function, na nagpapahintulot sa iyo na ipasa ang mga halaga sa function na may kaugnayan sa mga pangalan, i.e. Maaari mong ipasa ang mga argumento sa anumang pagkakasunud-sunod at tukuyin ang mga opsyonal na argumento. Halimbawa, "array_fill(start_index: 0, num: 100, value: 50)".
  • Kapag tumatawag sa mga pamamaraan pinapayagan gamit ang operator na "?", na nagpapahintulot sa iyo na magsimula ng isang tawag lamang kung ang pamamaraan ay naroroon, na umiiwas sa mga hindi kinakailangang pagsusuri para sa pagbabalik ng "null" na halaga. Halimbawa, "$dateAsString = $booking->getStartDate()?->asDateTimeString()";
  • Suporta mga uri ng unyon, pagtukoy sa mga koleksyon ng dalawa o higit pang mga uri (halimbawa, β€œpublic function foo(Foo|Bar $input): int|float;”).
  • Suporta mga katangian (mga anotasyon) na nagbibigay-daan sa iyong i-bind ang metadata (gaya ng impormasyon ng uri) sa mga klase nang hindi gumagamit ng Docblock syntax.
  • Suporta sa pagpapahayag tumugma, na, hindi tulad ng switch, ay maaaring magbalik ng mga halaga, suportahan ang pagsasama-sama ng mga kundisyon, gumamit ng mahigpit na paghahambing ng uri, at hindi nangangailangan ng "break" na detalye.

    $result = tugma($input) {
    0 => "kumusta",
    '1', '2', '3' => "mundo",
    };

  • Pinaikling syntax mga kahulugan ng klase, na nagpapahintulot sa iyo na pagsamahin ang kahulugan ng isang constructor at mga katangian.
  • Bagong uri ng pagbabalik - statik.
  • Bagong uri - magkakahalo, na maaaring gamitin upang matukoy kung ang isang function ay tumatanggap ng mga parameter ng iba't ibang uri.
  • Pagpapahayag ihagis upang mahawakan ang mga pagbubukod.
  • WeakMap upang lumikha ng mga bagay na maaaring isakripisyo sa panahon ng pagkolekta ng basura (halimbawa, upang mag-imbak ng mga hindi kinakailangang cache).
  • Pagkakataon gamit ang expression na "::class" para sa mga bagay (katulad ng pagtawag sa get_class()).
  • Pagkakataon mga kahulugan sa catch block ng mga exception na hindi nakatali sa mga variable.
  • Pagkakataon nag-iiwan ng kuwit pagkatapos ng huling elemento sa listahan ng mga parameter ng function.
  • Bagong interface Stringable upang matukoy ang anumang uri ng string o data na maaaring i-convert sa isang string (kung saan available ang __toString() na pamamaraan).
  • Bagong feature str_contains(), isang pinasimple na analogue ng strpos para sa pagtukoy ng paglitaw ng isang substring, pati na rin ang mga function na str_starts_with() at str_ends_with() para sa pagsuri ng mga tugma sa simula at dulo ng isang string.
  • Idinagdag na tampok fdiv(), na nagsasagawa ng operasyon ng paghahati nang hindi nagtatapon ng error kapag hinahati sa zero.
  • Nagbago lohika ng pagsasama ng string. Halimbawa, ang expression na 'echo "sum:" . Ang $a + $b' ay dating binibigyang kahulugan bilang 'echo ("sum: " . $a) + $b', at sa PHP 8 ay ituturing na 'echo "sum: " . ($a + $b)'.
  • Hinigpitan pagsuri sa mga pagpapatakbo ng aritmetika at bit, halimbawa, ang mga expression na "[] % [42]" at "$object + 4" ay magreresulta sa isang error.
  • Ipinatupad isang matatag na algorithm ng pag-uuri kung saan ang pagkakasunud-sunod ng magkaparehong mga halaga ay pinapanatili sa iba't ibang mga pagtakbo.
  • Pinagmulan: opennet.ru

Magdagdag ng komento