Het bètatesten van PHP 8 is begonnen

Geïntroduceerd de eerste bètarelease van de nieuwe tak van de programmeertaal PHP 8. De release staat gepland voor 26 november. Tegelijkertijd zijn corrigerende releases van PHP 7.4.9, 7.3.21 en
7.2.33, waarmee geaccumuleerde fouten en kwetsbaarheden werden geëlimineerd.

De belangrijkste innovaties PHP8:

  • inclusie JIT-compiler, waarvan het gebruik de productiviteit zal verbeteren.
  • Ondersteunen benoemde functieargumenten, waardoor u waarden aan de functie kunt doorgeven in relatie tot namen, d.w.z. U kunt argumenten in elke volgorde doorgeven en optionele argumenten definiëren. Bijvoorbeeld 'array_fill(start_index: 0, num: 100, waarde: 50)'.
  • Bij het aanroepen van methoden toegestaan met behulp van de operator “?”, waarmee u alleen een oproep kunt starten als de methode aanwezig is, waardoor onnodige controles op het retourneren van de “null”-waarde worden vermeden. Bijvoorbeeld: "$dateAsString = $booking->getStartDate()?->asDateTimeString()";
  • Ondersteunen soorten vakbonden, waarbij verzamelingen van twee of meer typen worden gedefinieerd (bijvoorbeeld “public function foo(Foo|Bar $input): int|float;”).
  • Ondersteunen attributen (annotaties) waarmee u metagegevens (zoals type-informatie) aan klassen kunt binden zonder de Docblock-syntaxis te gebruiken.
  • Ondersteuning voor expressie match, die, in tegenstelling tot switch, waarden kan retourneren, combinatievoorwaarden kan ondersteunen, strikte typevergelijkingen kan gebruiken en geen "break" -specificatie vereist.

    $resultaat = overeenkomst($invoer) {
    0 => "hallo",
    '1', '2', '3' => “wereld”,
    };

  • Verkorte syntaxis klassedefinities, waardoor u de definitie van een constructor en eigenschappen kunt combineren.
  • Nieuw retourtype - statisch.
  • Nieuw type - gemengd, die kan worden gebruikt om te bepalen of een functie parameters van verschillende typen accepteert.
  • uitdrukking Gooi uitzonderingen afhandelen.
  • Zwakke kaart om objecten te maken die kunnen worden opgeofferd tijdens het verzamelen van afval (bijvoorbeeld om onnodige caches op te slaan).
  • Kans gebruik van de uitdrukking “::class” voor objecten (analoog aan het aanroepen van get_class()).
  • Kans definities in het catch-blok van uitzonderingen die niet aan variabelen zijn gebonden.
  • Kans een komma achterlatend na het laatste element in de lijst met functieparameters.
  • Nieuwe interface rijgbaar om tekenreekstypen of gegevens te identificeren die kunnen worden geconverteerd naar een tekenreeks (waarvoor de methode __toString() beschikbaar is).
  • Nieuwe functie str_bevat(), een vereenvoudigde analoog van strpos voor het bepalen van het voorkomen van een substring, evenals de functies str_starts_with() en str_ends_with() voor het controleren van overeenkomsten aan het begin en einde van een string.
  • Functie toegevoegd fdiv(), die een delingsbewerking uitvoert zonder een fout te genereren bij het delen door nul.
  • Gewijzigd logica voor het samenvoegen van strings. Bijvoorbeeld de uitdrukking 'echo "sum:" . $a + $b' werd voorheen geïnterpreteerd als 'echo ("sum: " . $a) + $b', en wordt in PHP 8 behandeld als 'echo "sum: " . ($a + $b)'.
  • Aangedraaid het controleren van rekenkundige en bitbewerkingen, bijvoorbeeld de uitdrukkingen "[] ​​% [42]" en "$object + 4" zullen resulteren in een fout.
  • Geïmplementeerd een stabiel sorteeralgoritme waarbij de volgorde van identieke waarden over verschillende runs behouden blijft.
  • Bron: opennet.ru

Voeg een reactie